#include<iostream> #include<cstdio> using namespace std; int main(){ int n; while(cin>>n,n){ //==while(cin>>n&&n) for(int i=1;i<=n;i++) cout<<i<<' '; cout<<endl; } return 0; }
while(cin>>n,n) 后面的n是不是可以理解为“当n为0时,条件判断为错,故不重复输入;反之则可以一直输入”
我的理解:写while(cin >>0)与while(0)是不同的,前者cin函数已经读入到了值所以while函数判断为真执行以下代码,后者没有了cin的读入为真这个判断,只能对“0”进行判断而0为假所以不执行。所以当使用while(cin>>x,x)这个表达式时只对后者判断,若读到0值为假不执行,为其他值时和输入该值没区别,这个写法真的太妙了
妙哉
逗号运算符又叫顺序求值运算符,用于连接多个表达式,实现对多个表达式的顺序求值。 具有左结合性,依次计算各个表达式的值,并将最后一个表达式的值作为整个逗号表达式的值。
妙 太妙了
妙啊,太妙了 ··· while(cin>>n,n)//==while(cin>>n and n) ··· 逗号运算符
妙,我一直没想明白怎么在0跳出去
#include<bits/stdc++.h> using namespace std; int main() { int x; while (cin>>x) { if(x!=0) { for (int i = 1; i <=x; i ++ ) printf("%d ",i); printf("\n"); } } return 0; }
这样也ac了。。。。。。。-
为啥啊,那个while(cin>>x)那里我试了,只有输入eof或者输入与x的数据类型不符合的值,或者输入溢出值的时候while才会退出。输入0的时候while不退出啊
哦懂了,读到文件末尾了
这种语法是不是只能用while呢,我用for试了一下 好像不行
“&&n”的意思是不是n为真呢
礼貌问下为什么加上n就能去掉0,谢谢
逗号运算符,n为0的时候就被去除了
&& ,如果n为0,那么和前面的并结果就是假了,此时就不进入while循环
为什么最后不会 多一个空行
因为用了 while(cin>>n,n)相当于当输入n等于0时,表达式为while(cin>>n(逗号表达式不运行这里),0)——> while(0)——>while(false) 不循环
for 后面只跟了一个语句 没有加大括号
为什么还要用一个while(cin>>n,n) 不能直接while(cin>>n)吗 虽然我知道这样是错误的
我不是注释写了等价写法的意思吗
while(cin>>n)会一直读到文件末尾,而题目中读到0就要停止,相当于多读了一行
妙啊
while(cin >> n) 是否等于 while(cin >> n, n) ? Why?
no
求问:这个 逗号 为什么可以等价于 && 啊?
逗号运算符,整个表达式的值是最后一个表达式的值。
while(cin>>n,n) 后面的n是不是可以理解为“当n为0时,条件判断为错,故不重复输入;反之则可以一直输入”
我的理解:写while(cin >>0)与while(0)是不同的,前者cin函数已经读入到了值所以while函数判断为真执行以下代码,后者没有了cin的读入为真这个判断,只能对“0”进行判断而0为假所以不执行。所以当使用while(cin>>x,x)这个表达式时只对后者判断,若读到0值为假不执行,为其他值时和输入该值没区别,这个写法真的太妙了
妙哉
逗号运算符又叫顺序求值运算符,用于连接多个表达式,实现对多个表达式的顺序求值。
具有左结合性,依次计算各个表达式的值,并将最后一个表达式的值作为整个逗号表达式的值。
妙 太妙了
妙啊,太妙了
···
while(cin>>n,n)//==while(cin>>n and n)
···
逗号运算符
妙,我一直没想明白怎么在0跳出去
这样也ac了。。。。。。。-
为啥啊,那个while(cin>>x)那里我试了,只有输入eof或者输入与x的数据类型不符合的值,或者输入溢出值的时候while才会退出。输入0的时候while不退出啊
哦懂了,读到文件末尾了
这种语法是不是只能用while呢,我用for试了一下 好像不行
“&&n”的意思是不是n为真呢
礼貌问下为什么加上n就能去掉0,谢谢
逗号运算符,n为0的时候就被去除了
&& ,如果n为0,那么和前面的并结果就是假了,此时就不进入while循环
为什么最后不会 多一个空行
因为用了 while(cin>>n,n)相当于当输入n等于0时,表达式为while(cin>>n(逗号表达式不运行这里),0)——> while(0)——>while(false) 不循环
for 后面只跟了一个语句 没有加大括号
为什么还要用一个while(cin>>n,n) 不能直接while(cin>>n)吗 虽然我知道这样是错误的
我不是注释写了等价写法的意思吗
while(cin>>n)会一直读到文件末尾,而题目中读到0就要停止,相当于多读了一行
妙啊
while(cin >> n) 是否等于 while(cin >> n, n) ? Why?
no
求问:这个 逗号 为什么可以等价于 && 啊?
逗号运算符,整个表达式的值是最后一个表达式的值。