C++代码的意外输出.有人可以解释一下
An unexpected output for C++ code.Can someone explain?
我在进行随机搜索时遇到了这段代码,我虽然在 www.ideone.com 上执行它,输出是 0,而我预计它是 10。
#include <iostream>
using namespace std;
int main() {
int count = 0;
for(int i=0; i < 10; ++i)
count = count++;
std::cout << count;
return 0;
}
据我的理解,count = count++;
可以假设为count = count;
和count = count + 1;
那么输出不应该是 10 而不是 0 吗?这种行为的原因是什么?
注意:正如这里的评论所指出的那样,这个问题属于"未定义的行为和序列点",我想明确指出,由于我是C++新手,我不知道这些是未定义的行为。所以,我希望每个人都能原谅错误。
有问题的行是 count = count++;
。 有关错误内容的荒谬详细描述,请阅读未定义的行为和序列点。
基本上,您首先遇到哪个评估的问题,从=
运算符到count
的赋值或从++
运算符到count
的赋值。 如果它首先评估来自 ++
运算符的赋值,则您将获得 0。 如果它在从++
分配之前评估=
,那么您将得到 10。
AFAIR 这是一个未指定的行为,结果可能因编译器而异。
你可以只使用计数++; 它会递增。 计数++; 相当于计数 = 计数 + 1;
当你这样做时:
count = count++;
此时,您基本上已经为count
创建了一个新值。右侧的count++
现在被视为右值,计数的新值是 count++
中的最后一个值。即 0
相关文章:
- 有人能解释一下为什么下界是这样工作的吗C++的
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- 你能解释一下什么运行时错误是如何解决它的吗?
- 有人可以解释一下这段代码如何能够反转字符串
- 解释一下 for (char c : str) 的作用?
- 有人可以解释一下这个矩阵幂函数是如何工作的吗?
- 有人可以向我解释一下这段代码的作用吗?
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 我不完全确定此代码的行为.有人可以向我解释一下吗?
- 有人可以解释一下吗?这是关于数组和数组内部 if 语句的一些处理
- 我无法理解这一点,有人可以帮我解释一下吗?
- 有人可以解释一下复制功能的作用吗?
- 解释一下这个排序算法是如何工作的?
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 有人能给我解释一下下面的模板代码吗
- 有人能解释一下这些说法背后的逻辑是什么吗
- 在给定的代码中,有人可以解释一下(int i = 0; i<len; i++)count[str[i]]++的代码片段;
- 谁能解释一下这个BFS代码是如何工作的?
- 有人可以解释一下'sizeof'在此代码中返回的结果吗