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呢?搞不懂,求大神
关于C语言++和--的一个奇怪的问题
答案:2 悬赏:30 手机版
解决时间 2021-03-17 00:08
- 提问者网友:我们很暧昧
- 2021-03-16 19:25
最佳答案
- 五星知识达人网友:十鸦
- 2021-03-16 21:02
在语法层面寻求未定义行为的解释,无解
网页链接
网页链接
全部回答
- 1楼网友:几近狂妄
- 2021-03-16 21:20
从你的程序来看. 循环每次输入一个字符.统计字符的个数.
那么在输入字符后,会输入一个回车,表示这次输入结束. 因为回车也算是一个字符.
所以回车符会被scanf("%c",&x);获取. 这也就是你说所的每次都会跳过一次输入.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯