永发信息网

关于C语言++和--的一个奇怪的问题

答案:2  悬赏:30  手机版
解决时间 2021-03-17 00:08
  • 提问者网友:我们很暧昧
  • 2021-03-16 19:25
int a=1,b=1,c=1,x;
1.printf("%d\n",(a=a+++b+++c++)); //输出3
2.printf("%d\n",(x=a+++b+++c++)); //输出3
3. a=a+++b+++c++; printf("%d\n",a); //输出4
4. x=a+++b+++c++; printf("%d\n",x); //输出3

有两点疑点:
按理说,a+++b+++c++=(a++)+(b++)+(c++)=3,但为什么第4点等于3而偏偏第3点等于4呢?
如果这里用a=和x=的输出不同真存在道理,那为什么第1点和第2点都是输出3呢?搞不懂,求大神
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-03-16 21:02
在语法层面寻求未定义行为的解释,无解
网页链接
全部回答
  • 1楼网友:几近狂妄
  • 2021-03-16 21:20

从你的程序来看. 循环每次输入一个字符.统计字符的个数.

那么在输入字符后,会输入一个回车,表示这次输入结束. 因为回车也算是一个字符.

所以回车符会被scanf("%c",&x);获取. 这也就是你说所的每次都会跳过一次输入.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯