C语言变量赋值

喜乐呀 2019-05-08 09:07:44
为什么C语言中同类型的变量需要分开赋值? 而不同类型变量可以连续赋值? 例如a=b=0,如果a和b同时为int类型则这种赋值是错的,而当a为double类型,b为int类型时,就可以这样赋值。 为什么呢?
...全文
1052 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
喜乐呀 2019-05-24
  • 打赏
  • 举报
回复
引用 27 楼 weixin_44865493的回复:
[quote=引用 25 楼 ifndef_01的回复:]可以连续赋值的。 int a,b; a=b=0
嗯呢 因为我写的那道式子没有对b进行定义[/quote] int a=b=0 是这个意思 这样就错了
喜乐呀 2019-05-24
  • 打赏
  • 举报
回复
引用 25 楼 ifndef_01的回复:
可以连续赋值的。 int a,b; a=b=0
嗯呢 因为我写的那道式子没有对b进行定义
喜乐呀 2019-05-24
  • 打赏
  • 举报
回复
引用 20 楼 清者旁观的回复:
看样子还是代码写少了
您说的对。。。。。。。。
ifndef_01 2019-05-19
  • 打赏
  • 举报
回复
可以连续赋值的。 int a,b; a=b=0
喜乐呀 2019-05-15
  • 打赏
  • 举报
回复
感谢大家 我明白了 12楼应该是对的 感谢感谢
喜乐呀 2019-05-15
  • 打赏
  • 举报
回复
引用 17 楼 勤奋的执着的回复:
这种赋值是可以的啊, 一定是幻觉。。。 假设按照你的理解,a、b同为int类型,无法赋值。 那么a为double类型, b为int类型时,也不可以赋值,因为a = b = 0; 因为这里面有隐式类型转换,最后类型也是一样的
我觉得12楼是对的 因为连续赋值的时候没有对b进行变量的定义
喜乐呀 2019-05-15
  • 打赏
  • 举报
回复
引用 11 楼 KarivV的回复:
咱也不知道你看的是什么书 咱也不敢问 这是咱刚翻C++ Primer拍下来的
我是C语言 应该和c++不一样
嘤嘤怪i 2019-05-13
  • 打赏
  • 举报
回复
类型转换问题吧 一种是定义了类型a 一种是a 和b 都定义了它的类型
「已注销」 2019-05-12
  • 打赏
  • 举报
回复
看样子还是代码写少了
luj_1768 2019-05-11
  • 打赏
  • 举报
回复
这种语句实际上是个标记或者标注:编译时不产生代码,只是在数据区特定位置写上数据。所以相关规定关键在于编译器的支持。不同版本、不同厂商的产品,可能会有不少地方有不同约定,还需要参考厂商提供的资料。
lbh_ITsy 2019-05-11
  • 打赏
  • 举报
回复
初始化也不是这样写的奥
自信男孩 2019-05-10
  • 打赏
  • 举报
回复
引用 5 楼 weixin_44865493 的回复:
[quote=引用 4 楼 自信男孩的回复:]int a, b; a = b = 0;

这样赋值没问题吧

不行吧?它们是同一类型的[/quote]
已经测试,没问题的。
636f6c696e 2019-05-10
  • 打赏
  • 举报
回复
给楼上点个赞,看楼主问的问题完全不知道他在说什么
好运萝 2019-05-10
  • 打赏
  • 举报
回复
推测你产生这个结论的原因是你把定义和赋值的概念混淆了

int a = b =0; //错误 b未声明

int a;
double b = a = 0;// b = 0, a = 0 

int a, b;
a = b = 0; // a = 0, b = 0;
你口中的不同类型可以连续赋值 是因为你不能在一个语句里面同时声明两种变量类型 这样就避免了你出现了上面为未声明的错误 不同类型的连续赋值隐含类型转换 说了这样写不好不要这样写 你非要问为什么 让我想起了 那个++i += i++ + --i + i;这种问题 基本上c/c++版月经问题了 等下一个有缘人发问
好运萝 2019-05-10
  • 打赏
  • 举报
回复
咱也不知道你看的是什么书 咱也不敢问 这是咱刚翻C++ Primer拍下来的
喜乐呀 2019-05-10
  • 打赏
  • 举报
回复
引用 8 楼 拥抱Linux的回复:
[quote=引用 6 楼 weixin_44865493 的回复:]
[quote=引用 1 楼 拥抱Linux的回复:]错觉。
紫薯布丁。

不是错觉哦。书上这样写的[/quote]

纸上得来终觉浅,绝知此事要躬行。[/quote]
喜乐呀 2019-05-10
  • 打赏
  • 举报
回复
引用 3 楼 Shadow.DG的回复:
这不是规定吗……

就像1+1=2一样,
你总不能为了知道为什么1+1=2翻那些你根本看不懂的证明书吧……
规定怎么写,就先这么写,至于为什么,后面再说。
写多了,估计后面也不会问这个了……
不好意思啊 回复在七楼哦
勤奋的执着 2019-05-10
  • 打赏
  • 举报
回复
这种赋值是可以的啊, 一定是幻觉。。。 假设按照你的理解,a、b同为int类型,无法赋值。 那么a为double类型, b为int类型时,也不可以赋值,因为a = b = 0; 因为这里面有隐式类型转换,最后类型也是一样的
CaptainXue 2019-05-10
  • 打赏
  • 举报
回复
这两种写法都可以吧,和类型没有关系;
根据赋值运算符的右结合性,从右往左进行运算;
a=b=0;先是b=0;然后再把b的值赋给a,所以a的值为0
赵4老师 2019-05-10
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
加载更多回复(7)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧