鱼C论坛

 找回密码
 立即注册
查看: 1891|回复: 8

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

[复制链接]
发表于 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还是取最后的那个值(这句话看备忘录截图有提到的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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还是取最后的那个值(这句话看备忘录截图有提到的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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. }
复制代码


不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-13 08:56:14 | 显示全部楼层
2017-08-13_085424.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-14 13:13:54 | 显示全部楼层
和vvv 发表于 2017-8-13 08:52
我觉得是不能在定义变量时赋值,这样就可以:

好的 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-14 13:15:15 | 显示全部楼层

非常感谢
怎么是实习斑竹
那个 谁呢  小仙 呢 不干了啊 哈哈 你的上一任
斑竹加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-14 13:15:48 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-13 09:44
因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定 ...

还是这个解释比较适合我的问题 哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-14 16:45:20 | 显示全部楼层
屁哥 发表于 2017-8-14 13:15
还是这个解释比较适合我的问题 哈哈

可能是新手看看问题角度不一样,然后新手和新手交流比较容易
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-15 01:44:57 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-14 16:45
可能是新手看看问题角度不一样,然后新手和新手交流比较容易

哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 15:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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