打印
[C语言]

c语言中的++问题

[复制链接]
2283|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-8-7 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2018-8-7 09:48 | 只看该作者
是这样的,还有个什么左右原则吧

使用特权

评论回复
板凳
yanghelovehuang|  楼主 | 2018-8-7 09:59 | 只看该作者
ayb_ice 发表于 2018-8-7 09:48
是这样的,还有个什么左右原则吧

请问下什么是左右原则啊,和优先级冲突吗?

使用特权

评论回复
地板
ayb_ice| | 2018-8-7 10:03 | 只看该作者
yanghelovehuang 发表于 2018-8-7 09:59
请问下什么是左右原则啊,和优先级冲突吗?

具体的细节我也不清楚,知道是这样的结果就行了

如果感兴趣,网上搜索下就知道了

使用特权

评论回复
5
yanghelovehuang|  楼主 | 2018-8-7 10:11 | 只看该作者
ayb_ice 发表于 2018-8-7 10:03
具体的细节我也不清楚,知道是这样的结果就行了

如果感兴趣,网上搜索下就知道了 ...

嗯嗯 我知道是这样可是又和优先级冲突,所以就想搞明白, 谢谢啊

使用特权

评论回复
6
yanghelovehuang|  楼主 | 2018-8-7 10:16 | 只看该作者
ayb_ice 发表于 2018-8-7 10:03
具体的细节我也不清楚,知道是这样的结果就行了

如果感兴趣,网上搜索下就知道了 ...

非常抱歉我还想问下,是不是在赋值的表达式里有++,是不是都是用a没++之前的值去运算运算完成后a再++? 例如 b=10 *a++ 先10*a赋值给b,a再++,不考虑优先级?

使用特权

评论回复
7
ayb_ice| | 2018-8-7 10:19 | 只看该作者
yanghelovehuang 发表于 2018-8-7 10:16
非常抱歉我还想问下,是不是在赋值的表达式里有++,是不是都是用a没++之前的值去运算运算完成后a再++?  ...

不建议用这种容易产生混淆的表达式来写程序,自己都不是很清楚,别人也会不清楚,

可以分成几句话来写

有个C专家说他只记得+-*/的优先级,其它的都不记得,虽然有点夸张,但是有道理的

使用特权

评论回复
8
yanghelovehuang|  楼主 | 2018-8-7 11:11 | 只看该作者
ayb_ice 发表于 2018-8-7 10:19
不建议用这种容易产生混淆的表达式来写程序,自己都不是很清楚,别人也会不清楚,

可以分成几句话来写

嗯嗯 我也觉得很偏 可是面试题就是面试这样的 虽然平时用不到 呜呜

使用特权

评论回复
9
梦幻泡影| | 2018-8-7 11:22 | 只看该作者
这样写:b = ++a;就对了

使用特权

评论回复
10
ayb_ice| | 2018-8-7 11:37 | 只看该作者
yanghelovehuang 发表于 2018-8-7 11:11
嗯嗯 我也觉得很偏 可是面试题就是面试这样的 虽然平时用不到 呜呜

++优先级高,是说a++不能分离,而不是b=a,然后对b++

使用特权

评论回复
11
john_lee| | 2018-8-7 12:10 | 只看该作者
C语言中有个“序列点(sequence point)”的概念,如果不理解这个概念,你很难搞明白你的问题。

使用特权

评论回复
12
taoest| | 2018-8-7 13:27 | 只看该作者
你说的优先级是结合优先级,不是运算优先级。++运算符本身就是后自增。

使用特权

评论回复
13
sjnh| | 2018-8-7 14:07 | 只看该作者
写了这些年程序,反而把优先级全忘记了,只记得()的优先级高,所以只要是没把握的,一律加(),从来没在优先级上出过问题;
包括 b=a++; 这种,我一般也是分开写;自己看的清楚,别人也看的清楚

使用特权

评论回复
14
yanghelovehuang|  楼主 | 2018-8-7 14:48 | 只看该作者
sjnh 发表于 2018-8-7 14:07
写了这些年程序,反而把优先级全忘记了,只记得()的优先级高,所以只要是没把握的,一律加(),从来没在 ...

没办法 面试需要 明知用不到,和上学学的东西一样

使用特权

评论回复
15
mailshichao| | 2018-8-7 16:25 | 只看该作者
如果++的优先级比较好,那不是a++与++a没有区别了

使用特权

评论回复
16
yu0405jie| | 2018-8-7 16:55 | 只看该作者
C++里面如果对这个++进行重载的话,重载函数大概是如下实现的
int c = a;
a = a + 1;
return c;
C语言里面是不是大概也是这样实现的

使用特权

评论回复
17
huang1007| | 2018-8-7 17:43 | 只看该作者
面试竟然面试这些,这不坑爹吗,很多大公司比如阿里的编程规范里面都表示,表达式一律用括号表示优先级,谁他喵去记那么多优先级啊,又容易出错

使用特权

评论回复
18
yanghelovehuang|  楼主 | 2018-8-7 17:54 | 只看该作者
huang1007 发表于 2018-8-7 17:43
面试竟然面试这些,这不坑爹吗,很多大公司比如阿里的编程规范里面都表示,表达式一律用括号表示优先级,谁 ...

真的,面试这些的还多呢, 还有值赋来赋去的,指针乱跑,总之越用不到越有

使用特权

评论回复
19
lihui567| | 2018-8-8 08:58 | 只看该作者
这个最好后面加括号,理解也方便,本来就是先++后赋值

使用特权

评论回复
20
xuplastic| | 2018-8-8 19:08 | 只看该作者
MSVC实测,先++再赋值!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝