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 代码又插错了。完整代码在下面
一年多之前 回复
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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
有关优先级和声明
Source P64 c语言声明的优先级规则 A.声明从它的名字开始读取,然后按照优先级顺序依次读取 B.优先级从高到低依次是 B.1 声明中被括号括起来的部分 B.2 后缀操作符 括号()表示这是一个函数,方括号[]表示这是一个数组 B.3前缀操作符:星号*表示指向…的指针 C.如果const关键字后面紧跟类型说明符(如 int long等) 它作用于类型说明符。在其他情...
有关优先级的几点补充
Linux调度器:进程优先级caid 2017-10-02 10:38对于动态优先级与静态优先级有一点疑惑,仔细阅读代码后(linux-2.6.10),有一些浅见, 1.    static_prio这里的nice值的说明,是否应该去掉或者放到第一行nice值部分说明,虽然普通进程的static_prio是由nice值及bonus计算而得,但是放在这里始终感觉会导致理解错误,或者将注意力从优先级上...
有关C编译器的设计报告
含有10份的有关编译器的设计报告,词法语法设计,流程图设计等等,希望有参考价值。
C/C++中优先级、结合方向与执行顺序的关系
原文在:http://blog.sina.com.cn/s/blog_93b45b0f0100x47j.html  知道语言是有以分号结束的语句组成,但语句并不是程序处理的最小单位。理论上讲程序应该以每个函数(方法)为一个语句,而操作符有可以理解成函数。但是那样做的话,程序会很难看,所以通常的语言以表达式为程序的最小执行单位。一个语句本质上说是一个表达式,但是也可以说成是逗号符,分开的若干个表达式
有关编译器的多行注释问题
Code::Block ctrl+shift+c    注释多行 ctrl+shift+x    取消注释 Eclipse 按ctrl+/注释成“//”形式 按ctrl+shift+/注释成“/* ...*/” 按ctrl+/:按两次取消注释 按ctrl+shift+/两次不能取消注释 Visual Stu
C++有关编译器的笔记
assert 含义是断言,它是标准C++的cassert头文件中定义的一个宏,用来判断一个条件表达式的值是否为ture,如果不为true, 程序会终止,并且报告出错误,这样就很容易将错误定位 通常我们开发的程序有2种模式:Debug模式和Release模式 1. 在Debug模式下,编译器会记录很多调试信息,也可以加入很多测试代码,比如加入断言assert, 方便我们程序员测试,以及出现bug
优先级与时间片
#include &amp;lt;iostream&amp;gt;    #include &amp;lt;stdlib.h&amp;gt;    #include &amp;lt;string.h&amp;gt;  using namespace std;  typedef struct node        {          char name[20];    /*进程的名字*/          int prio;     /*进程...
编译器一:程序设计语言、编译器和开发环境之间的关系
MinGW -将GNU开发工具移植到Win32平台下的计划 Cygwin - 在Windows上运行GNU程序的模拟软件  (2011-04-02 16:39:57)     程序开发从时间先后顺序上可以分为三个阶段:1、编码阶段,2、编译阶段,3、运行阶段。     在编码阶段我们使用程序设计语言,根据特定的文法利用程序设计语言来编码。就像是根据英语的语法用英语语言来写文章。当然一种语言
vs编译器设置
因为长期进行C++编码,忽视了VS中文件编译器的设置问题,这两天要使用到之前下载的C编码的工程,预想打算改为C++编译。遇到问题 总结如下。归根结底还是对vs使用的不熟练。 1.在VS2008中 对于某个代码文件,是以C++编译器编译,还是以C编译器编译   与文件本身的后缀是.cpp 还是.c无关。主要按优先级依次取决于以下两项配置   一是工程本身的编译器设置,见工程属性
C++11与编译器支持
_MSC_VER是MSVC编译器的内置宏,定义了编译器的版本,_MSC_VER 值对应版本关系 MSVC++ 11.0 _MSC_VER = 1700 (Visual Studio 2012)  MSVC++ 10.0 _MSC_VER = 1600 (Visual Studio 2010) MSVC++ 9.0 _MSC_VER = 1500  (Visual Studio 2008)