int i=10; i=i---i*(i=-3)*i+++++i; printf( i=?); 请高手详细解释一下...
发布网友
发布时间:2024-05-14 04:02
我来回答
共2个回答
热心网友
时间:2024-06-02 11:12
这个题有错误,根据优先级,先算括号里的i=-3,接着算-3*i=6(因为前后都是*,根据结合性,自右向左),下一步就算i*6=36,然后就是负号运算符,得到-36,错误从这里开始,-36是一个表示式,对于自加自减运算符只能用于变量,对表达式是不行的,呵呵,我是这样理解的,其实这样的编程写法大可不必,作为理解运算符优先级和结合性到可以理解,下面给出我对优先级和结合性记忆的方法,希望对你有帮助
优先级:成员,逗号丢一边,123赋值,移位,逻辑位插中间
结合性:123赋值,自加减,乘除余
解释:对于优先级口诀,成员指的是例如类成员运算符".",数组下标符“[]”等一些符号,逗号是指逗号运算符,这两个中成员是所有运算符里优先级最高的,逗号是最低的
123赋值:意思就是单目,双目,三目运算符,赋值是赋值运算符,他们优先级按顺序递减
通过上面的口诀就记了个大概,具体的还需要知道一般顺序:算术>关系>逻辑
移位,逻辑位插中间:这句意思就是把移位>>,<<插到算术和关系的中间;逻辑位插到关系和逻辑中间,差不多就记住了
结合性口诀:123赋值,自加减,乘除余,这几个运算符是右结合,别的都是左结合
慢慢理解吧,不知道对你有没帮助,我是这样记的
热心网友
时间:2024-06-02 11:09
如果不是专业人员,不必去纠结这个问题吧。