QQ登录

只需一步,快速开始

搜索
查看: 129|回复: 8

[已解决]逗号运算符问题 第16节课

[复制链接]
最佳答案
0 
累计签到:120 天
连续签到:1 天
发表于 2017-8-13 00:41:21 | 显示全部楼层 |阅读模式
1鱼币
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a = 3, 5;

  5.         printf("a = %d\n", a);

  6.         return 0;
  7. }
复制代码


怎么证明 a 等于 表达式 N 的值。 图片里a = 3, 5;  a的值是5么?
我 int a = 3, 5;是报错的。。。。。。
最佳答案
2017-8-13 00:41:22
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a = (3, 5);  //这里要加括号

  5.         printf("a = %d\n", a);

  6.         return 0;
  7. }
复制代码


因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定义变量,所以逗号运算符就被系统认为是分隔符,所以就像小甲鱼老师说的变成了a = 3; 5;  就是因为这样定义了一个常量,所以编译器会出错。要想先逗号运算符就要加上()。
加了()后程序的结果是5,无论逗号运算符多少个值,a还是取最后的那个值(这句话看备忘录截图有提到的)
8-12-3.png

最佳答案

查看完整内容

因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定义变量,所以逗号运算符就被系统认为是分隔符,所以就像小甲鱼老师说的变成了a = 3; 5; 就是因为这样定义了一个常量,所以编译器会出错。要想先逗号运算符就要加上()。 加了()后程序的结果是5,无论逗号运算符多少个值,a还是取最后的那个值(这句话看备忘录截图有提到的)
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
147 
累计签到:109 天
连续签到:56 天
发表于 2017-8-13 00:41:22 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a = (3, 5);  //这里要加括号

  5.         printf("a = %d\n", a);

  6.         return 0;
  7. }
复制代码


因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定义变量,所以逗号运算符就被系统认为是分隔符,所以就像小甲鱼老师说的变成了a = 3; 5;  就是因为这样定义了一个常量,所以编译器会出错。要想先逗号运算符就要加上()。
加了()后程序的结果是5,无论逗号运算符多少个值,a还是取最后的那个值(这句话看备忘录截图有提到的)
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
17 
累计签到:141 天
连续签到:2 天
发表于 2017-8-13 08:52:36 | 显示全部楼层
我觉得是不能在定义变量时赋值,这样就可以:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a;
  5.         a = 3,5;
  6.         printf("a = %d\n", a);
  7.         return 0;
  8. }
复制代码


不会报错
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
480 
累计签到:136 天
连续签到:133 天
发表于 2017-8-13 08:56:14 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:120 天
连续签到:1 天
 楼主| 发表于 2017-8-14 13:13:54 | 显示全部楼层
和vvv 发表于 2017-8-13 08:52
我觉得是不能在定义变量时赋值,这样就可以:

好的 谢谢
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:120 天
连续签到:1 天
 楼主| 发表于 2017-8-14 13:15:15 | 显示全部楼层

非常感谢
怎么是实习斑竹
那个 谁呢  小仙 呢 不干了啊 哈哈 你的上一任
斑竹加油
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:120 天
连续签到:1 天
 楼主| 发表于 2017-8-14 13:15:48 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-13 09:44
因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定 ...

还是这个解释比较适合我的问题 哈哈
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
147 
累计签到:109 天
连续签到:56 天
发表于 2017-8-14 16:45:20 | 显示全部楼层
屁哥 发表于 2017-8-14 13:15
还是这个解释比较适合我的问题 哈哈

可能是新手看看问题角度不一样,然后新手和新手交流比较容易
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:120 天
连续签到:1 天
 楼主| 发表于 2017-8-15 01:44:57 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-14 16:45
可能是新手看看问题角度不一样,然后新手和新手交流比较容易

哈哈
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-22 01:47 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表