while语句的问题
求助各位大佬while((c=getchar() )!= '\n');
中的i比
while((c=getchar() )!= '\n')
i++;
要多加1,请问这是为什么?
如何用while语句完整的表达这两个式子呢? 本帖最后由 LuLD 于 2021-3-15 11:13 编辑
i++ ,i 先做运算,运算之后加1
c=getchar() )!= '\n'这句运行完之后 i的值加1,所以在while 循环里打印的话 i的值是加1后的
个人建议不要这么写,因为不同的编译器可能会有不同的结果,在正式写的时候也应该避免这么写 LuLD 发表于 2021-3-15 11:11
i++ ,i 先做运算,运算之后加1
c=getchar() )!= '\n'这句运行完之后 i的值加1,所以在while 循环里打印的 ...
那想再请教一下,这句如何用完整的while语句来写呢? 你这两个表达式是等价的,没有区别哦
while((c=getchar() )!= '\n'){
printf("%d", i);
}
while((c=getchar() )!= '\n'){
i++;
printf("%d", i);
} Fury2333 发表于 2021-3-15 15:41
那想再请教一下,这句如何用完整的while语句来写呢?
没看明白你啥意思,你可以看看 4# 的是不是你想要的 LuLD 发表于 2021-3-15 16:59
没看明白你啥意思,你可以看看 4# 的是不是你想要的
好的,谢谢 木子李工 发表于 2021-3-15 16:40
你这两个表达式是等价的,没有区别哦
int main()
{
char c1={0},c2={0};
int i=0,j=0;
printf("请输入abc:");
while((c1=getchar() )!= '\n')
i++;
printf("i值:%d\n",i);
printf("请输入abc:");
while((c2=getchar() )!= '\n') ;
printf("j值:%d\n",j);
return 0;
}
可是这段代码的结果是i值:3,j值:4,这是为什么呢 本帖最后由 LuLD 于 2021-3-16 09:30 编辑
Fury2333 发表于 2021-3-15 19:14
while((c1=getchar() )!= '\n') 先看这个,i++ 什么时候才执行 ,是在 (c1=getchar() )!= '\n'这个判断式成立之后才执行的
i++;
printf("i值:%d\n",i);
a b c \n
i的值 0 1 2 判断不成立跳出
i++ 1 2 3 判断不成立跳出
---------------------------------------------------------
while((c2=getchar() )!= '\n') ; 不管 (c2=getchar() )!= '\n'判断式是否成立,j 参与运算之后就会 +1
printf("j值:%d\n",j);
a b c \n
j的值 0 1 2 判断不成立跳出
j++ 1 2 3 4
LuLD 发表于 2021-3-16 09:25
while((c1=getchar() )!= '\n') 先看这个,i++ 什么时候才执行 ,是在 (c1=getchar() )!= '\n' ...
明白了,谢谢!
页:
[1]