2 qjwlfxx qjwlfxx 于 2016.09.17 15:44 提问

C++中,++和=的优先级是否和编译器有关?

C++中,j最后输出为100?为什么?
++和=的优先级是否和编译器有关?

 #include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
    int j = 0;
    for (int i = 0; i< 100; i++)

    cout << j<< endl;
    return 0;
}

8个回答

u014559880
u014559880   2016.09.17 15:55

开什么玩笑,j都没动过,难道不一直是0?

qq_27587417
qq_27587417   2016.09.17 20:14

这个问题好像本身有问题吧。。。j的值都没变过,你说的是i?如果说的是i,i的值最后也不会是100,而是99

qq_29594393
qq_29594393   Ds   Rxr 2016.09.17 16:04

C++中,++和=的优先级是否和编译器有关?无关 ++的优先级>=
C++中,j最后输出为100? j的值应该一直为1

liuhannan111
liuhannan111   2016.09.18 10:28

首先优先级指定和编译器无关,++的一定是大于=的,其次楼主的代码不完整吧。。

u013248963
u013248963   2016.09.18 11:46

代码不完整吧,单说优先级的话,++优先级大于=的

ix_lifelyvan
ix_lifelyvan   2016.09.20 15:04

=是单目运算符,=是赋值运算符,单目运算符优先级大于赋值运算符

qjwlfxx
qjwlfxx   2016.11.16 09:35

实在不好意思,main函数中的空行少了一句:j=j++;
完整代码如下:

#include
#include
using namespace std;

int main()
{
int j = 0;
for (int i = 0; i < 100; i++)
j=j++;
cout << j << endl;
return 0;
}

我用visual studio 2013版本编译运行出来的结果是j=100,但是用网上在线C++编译器计算出来是0

qjwlfxx
qjwlfxx 代码又插错了。完整代码在下面
11 个月之前 回复
qjwlfxx
qjwlfxx   2016.11.16 09:37
 #include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
    int j = 0;
    for (int i = 0; i < 100; i++)
        j=j++;
        cout << j << endl;
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片