社区
C语言
帖子详情
i+++j怎么结合?
langhuazht
2008-11-01 05:09:36
++这个一元运算符的结合律是 从右到左
针对 i+++j 怎么理解? 1、从j开始往左数,形成i+(++j) ;2、从i开始 见到++ 则执行往右的结合 形成(i++)+j 哪个理解正确??还有执行这个运算类的是不是就是从左开始执行,让后见到各种运算符,再进行结合操作? 要是按照这样理解的话,应该是第2个理解对,帮忙确认一下!!
...全文
1437
9
打赏
收藏
i+++j怎么结合?
++这个一元运算符的结合律是 从右到左 针对 i+++j 怎么理解? 1、从j开始往左数,形成i+(++j) ;2、从i开始 见到++ 则执行往右的结合 形成(i++)+j 哪个理解正确??还有执行这个运算类的是不是就是从左开始执行,让后见到各种运算符,再进行结合操作? 要是按照这样理解的话,应该是第2个理解对,帮忙确认一下!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hzc191025
2008-11-01
打赏
举报
回复
按照(i++)+j这种方式组合
注:在TC和VC6.0下都是这样的
jznhljg
2008-11-01
打赏
举报
回复
哦。。针对你这个。当然就是 (i++)+j这种解释方法了。。
还有一个就是i+++++j这个表达式。。。它按照词法"贪心法“来解释。也只能这样解释成 (i++)++ +j
但这样的话 i++它就不是左值了。所以后面的++操作会报错。你可以试试。。。
如果你写成i++ + ++j这样就没问题了。原因上面已经说过了。
ARESK
2008-11-01
打赏
举报
回复
是第一种吧,从右向左结合。对不?
ARESK
2008-11-01
打赏
举报
回复
是第一种吧,从右向左结合。对不?
jznhljg
2008-11-01
打赏
举报
回复
你写的程序是谁在执行。首先是让编译器进行词法分析。扫出来一个个的“符号”token。。然后再执行语法分析。。。
有问题了你就直接去看它是怎么进行的。自然问题就相应而解了。。。
jznhljg
2008-11-01
打赏
举报
回复
词法分析里面有一个所谓的“贪心法”或者说叫“大嘴法”:
每一个符号应该包含尽可能多的字符。 也就是说,编译器将程序分解为符号的办法是
从左到右一个字符一个字符的读入。如果该字符可能组成一个符号,那么再读入下一个
字符。判断已经读入的字符组成的字符串是否可能是一个符号的组成符号。如果可能再
继续读入下一个字符。重复上面的过程。直到读入的字符组成的字符串不再可能组成一个
有意义的符号。
K&R 对这个方法的表述是:
如果(编译器的)输入流截止至某个字符之前都已经被分解为一个个符号,那么下一个
符号将包括从该字符之后可能组成一个符号的最长字符串。
注意:除了字符串和字符常量,符号的中间不能嵌有空白。
如a---b和a-- -b的含义相同。但和a- --b的含义不同。
lrujie
2008-11-01
打赏
举报
回复
2级优先级 右结合 :
! 逻辑非运算符 , ~ 按位取反运算符 ,++ 自增运算符 , -- 自减运算符 , - 负号运算符 ,(类型) 类型转换运算符 ,* 指针运算符 ,& 地址与运算符 ,sizeof 长度运算符 .
3级优先级 左结合
* 乘法运算符 ,/ 除法运算符 ,% 取余运算符 .
4级优先级 左结合
+ 加法运算符 ,- 减法运算符 .
MilanSpiRiT
2008-11-01
打赏
举报
回复
第2种~~~(i++)+j
++的优先级比+高,所以先i++,再+j
wyswyg63
2008-11-01
打赏
举报
回复
(i++)+j 这个
莫衷一是——i
+++
j 该如何计算?
这是一个有趣的计算, 3 个加号相连。那么,到底是如何
结合
的呢?是按照: i + (++j)来运算,还是按照(i++) + j 来运算呢? 这个问题在类似于 C / C++中讨论是没有多大意义的,因为 C / C++依赖于实现的硬件结构,不同的环境结果也会不同。不过在 Java 中,这个结果是固定的,不受其运行的硬件环境与平台所影响。
i
+++
j语句是正确的吗
相信很多人看到 i
+++
j 就傻眼了,这是正确的吗,如果是正确的,那执行顺序是什么? public class ThreePlus { public static void main(String[] args) { int i = 10; int j = 20; int k = i
+++
j; System.out.print...
【Java语法解析】i
+++
j应该如何计算?
文章目录语法话题语法分析最长可能解析原则原则解析问题思考原则的例外例外1——例外2—— 语法话题 本期的话题如下: i
+++
j应该如何计算? 关于该表达式,在类似于C / C++中讨论是没有多大意义的,因为C / C++依赖于实现的硬件结构,不同的环境结果也会不同。不过在Java中,这个结果是固定的,不受其运行的硬件环境与平台所影响。 语法分析 我们可以将表达式解析成两种可能的形式: i + (++j) (i++) + j 以上的括号不是必须的,这里仅为了清晰起见(后面也是如此)。 我们可以通过
关于简单的左值无效问题 j = ++ i + ++i + ++i
今天同学给我一个语句求值: j = ++ i
+++
i
+++
i; 乍一看,j = ++i ++ + i++ +i;给出9的答案; 错 后来通过编译器调整,唯一的正确
结合
方式为j = ++i + ++i + ++i; 前一个i加加 i 变成2; 然后后一个变成加加i 两个i 变成3 ,到最后一个加加,需要先判断左值,而左边是一个算式不能作为左值,计算左值为6常量,最后一个加加为...
c语言中i++与++i的使用技巧
首先我们要先知道++i与i++的基本用法及其基本区别 ++i 先自加,在使用 i++ 先使用,再自加 粗略地看,++i和i++的作用都相当于i = i+ 1,但++i和i++的区别在于++i是先执行i = i + 1后,再使用i的值, 而i++是先使用i的值后,再执行i = i+ 1. 假如i的原值是3,则下面两个例子 j = ++i(i的值先变成4,再赋给j,j的值为4)
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章