-
732 votesanswersviews
为什么这些构造使用前后增量未定义的行为?
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? vola... -
5 votesanswersviews
如何在while循环中评估“std :: cin >> value”?
目前我正在自学C Primer 5th . 这是我不确定的事情 . (我在F.A.Q找不到确切的相关问题) . 考虑这个while循环: while(std::cin>>value){...} \\value here was defined as int. 教科书上写道: 该表达式从标准输入中读取下一个数字,并将该数字存储在值中 . 输入运算符(第1.2节,第8页)返回其左操... -
732 votesanswersviews
为什么这些构造使用前后增量未定义的行为?
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? vola... -
164 votesanswersviews
'for'循环内的后递增和预递增产生相同的输出[重复]
这个问题在这里已有答案: Difference between i++ and ++i in a loop? 21个答案 以下for循环产生相同的结果,即使一个使用后增量和另一个预增量 . 这是代码: for(i=0; i<5; i++) { printf("%d", i); } for(i=0; i<5; ++i) { printf(&quo... -
6 votesanswersviews
i = post_increment_i()的行为是指定的,未指定的还是未定义的?
考虑以下C程序: int i = 0; int post_increment_i() { return i++; } int main() { i = post_increment_i(); return i; } 关于2011版C标准(称为C11),以下哪种替代方案是正确的: C11保证主要返回0 . C11保证main返回0或1 . 根据C11,此程序的行为未... -
3 votesanswersviews
c - 为什么i = i调用未定义的行为? [重复]
这个问题在这里已有答案: Why are these constructs using pre- and post-increment undefined behavior? 14个答案 我理解C使用序列点的概念来识别模糊计算,并且 = 运算符不是序列点 . 但是,我无法看到执行该语句时有任何歧义 i = ++i 根据我的理解,这仅仅是评估 &i 处的任何内容,增加它并将其存储在同一位...