作业帮 > 综合 > 作业

C语言c=(*pa)+++*pb的疑问,求解答

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 14:01:44
C语言c=(*pa)+++*pb的疑问,求解答
C语言c=(*pa)+++*pb的求解答
例如 *pa=2;*pb=2;
请问为什么是 c=((*pa)++)+*pb这样结合啊
而不是 c=(*pa)+(++*pb) 这样结合呢?
++的结合性不是自右像左的吗?
这样似乎变成自左向右了
谢谢了
C语言c=(*pa)+++*pb的疑问,求解答
c语言中有个原则叫“词法解析的贪婪匹配原则”:优先匹配尽可能多字符的符号,无论是否有语法错误(因为词法分析时还没有语法检查).
于是a+++++b会被当作a ++ ++ + b而不是a ++ + ++ b(可能是合法的)考虑.这是非法的表达式,因此产生编译错误.
所以你的c=(*pa)+++*pb 被解析成 c=((*pa)++)+*p