求助一个c基础问题,来自小鱼老师的扩展阅读
#include <stdio.h>int main()
{
int a = 5;
++(a++);
return 0;
}
小鱼老师在lvalue扩展阅读里指出这个会报错,试过确实报错了,但++(a++),为什么是++(5),而不是++(6),不是很理解,望知晓的朋友指点,谢谢啦~ 因为后置++就是先取值再自增 {:10_245:}我觉得初学 不要去较劲 ++i 或者 i++ 尽量规避他们之间的区别, 他们的目的都是一样的 就是 i = i + 1, 只是执行生效的时间不同罢了~ a++是先进行运算,运算完之后再对a进行自加。
++a是先进行自加,自加完之后再进行其他的运算。
所以 当a=5 时++(a++)
先小括号中a++ 先运算后自加,所以括号里面还是5
该表达式的结果应该就是++5
我是这么理解的,不知道正不正确
还有不明白报错是为什么,
求楼主的编程软件
BngThea 发表于 2018-2-7 20:19
因为后置++就是先取值再自增
谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++? Z皮皮 发表于 2018-2-7 21:42
a++是先进行运算,运算完之后再对a进行自加。
++a是先进行自加,自加完之后再进行其他的运算。
所以 ...
报错应该是++运算符不能直接运用在费变量上,我是这样理解报错的 Z皮皮 发表于 2018-2-7 21:55
求楼主的编程软件
Visual Studio Community 2017,个人学习用~ 风过无痕丶 发表于 2018-2-7 21:24
我觉得初学 不要去较劲 ++i 或者 i++ 尽量规避他们之间的区别, 他们的目的都是一样的 就是 ...
嗯,谢谢{:10_281:},初学容易钻牛角尖,哈哈,想尽快了解背后运算的原理~ pypsrand 发表于 2018-2-7 23:18
谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++?
不太懂诶
#include <stdio.h>
int main()
{
int a = 5;
++a;
return 0;
}
这个为什么不报错呢,++符不是也是直接运用在常量上吗。
pypsrand 发表于 2018-2-7 23:19
报错应该是++运算符不能直接运用在费变量上,我是这样理解报错的
回复错了。。
我想问一下这里。
#include <stdio.h>
int main()
{
int a = 5;
++a;
return 0;
}
这个为什么不报错呢,++符不是也是直接运用在常量上的吗。 pypsrand 发表于 2018-2-7 23:18
谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++?
是 a98 发表于 2018-2-8 02:23
回复错了。。
我想问一下这里。
++a;是作用于变量,++5才是作用于常量,++(a++)这里小括号内返回的值是常量5,读取出来是++(5);所以报错,自增自减运算符不能作用于常量 BngThea 发表于 2018-2-8 07:53
是
哦哦明白了谢谢 夯昊 发表于 2018-2-9 09:56
++a;是作用于变量,++5才是作用于常量,++(a++)这里小括号内返回的值是常量5,读取出来是++(5);所 ...
嗯嗯.....明白了谢谢 pypsrand 发表于 2018-2-7 23:20
Visual Studio Community 2017,个人学习用~
多谢多谢
页:
[1]