突然被自加困惑,希望大佬解释
本帖最后由 Liu4Real 于 2020-2-10 16:53 编辑#include<stdio.h>
int main()
{
int a=-2,b=0;
while(a++&&++b);
printf("%d,%d\n",a,b);
}
程序运行后输出结果是什么?
答案给的a=1,b=2,能详细解释一下吗谢谢! 我认为答案是a=0,b=3 Liu4Real 发表于 2020-2-10 16:06
我认为答案是a=0,b=3
请用代码格式发代码,我现在根本看不出缩进 qiuyouzhi 发表于 2020-2-10 16:20
请用代码格式发代码,我现在根本看不出缩进
不需要缩进的 我去全是中文标点符号
楼主你确定这能正确运行?
希望下次代码工整一点 本帖最后由 一个账号 于 2020-2-10 16:38 编辑
Liu4Real 发表于 2020-2-10 16:06
我认为答案是a=0,b=3
第一次循环 结束 a = -1, b = 1;
第二次循环开始时 a = -1,b =1;
第二次循环结束 a = 0, b = 2;
第三次循环开始 a = 0, b =2;
结果a=0了,while判断此时的a不满足条件了,然后a++开始执行,a = 1 因为条件不满足,循环体不会执行++b,所以b的值没有变化。 先弄懂a++和++a的区别
a++是先使用一次a,再加1
++a是先加1,再使用a 你可以把a++改成++a,看看效果,理解理解 qiuyouzhi 发表于 2020-2-10 16:20
请用代码格式发代码,我现在根本看不出缩进
改过了 不好意思 一个账号 发表于 2020-2-10 16:32
第一次循环 结束 a = -1, b = 1;
第二次循环开始时 a = -1,b =1;
第二次循环结束 a = 0, b = 2;
a++不是先使用一次a再自加的吗,那第一次循环结束不应该是a=-2,b=1吗? 因为0是False 一个账号 发表于 2020-2-10 16:32
第一次循环 结束 a = -1, b = 1;
第二次循环开始时 a = -1,b =1;
第二次循环结束 a = 0, b = 2;
a++不是先使用一次a再自加的吗,那第一次循环结束不应该是a=-2,b=1吗? a++是先返回a的值,再自加;
++a是先自加,再返回加后的值。 love_qj 发表于 2020-2-10 17:01
a++是先返回a的值,再自加;
++a是先自加,再返回加后的值。
那在这道题里怎么解释呢,能具体一点吗 谢谢!
建议看一下,优先级 本帖最后由 367 于 2020-2-11 10:41 编辑
#include<stdio.h>
int main()
{
int a=-2,b=0;
while(a++&&++b)
printf("%d,%d\n",a,b);
printf("%d,%d\n",a,b);
}
运行结果:
-1,1
0,2
1,2
367 发表于 2020-2-11 10:38
#include
int main()
{
第二次循环结束后a=0,b=2
进行第三次循环时,条件判断a=0意味着条件为假,结束
而此时a++先判断了a=0,后又++,即a=1
所以最后结果为a=1,b=2 367 发表于 2020-2-11 10:46
第二次循环结束后a=0,b=2
进行第三次循环时,条件判断a=0意味着条件为假,结束
而此时a++先判断了a=0 ...
明白了 谢谢!
页:
[1]