首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

apple=sizeof(int)*p解决方案

2012-08-21 
applesizeof(int)*p这是 c专家编程 里面的问题,而且以前也有人在http://topic.csdn.net/u/20091020/18/c6

apple=sizeof(int)*p
这是 c专家编程 里面的问题,而且以前也有人在http://topic.csdn.net/u/20091020/18/c62d8bbb-c91d-4b80-814d-8486c2ced479.html问过,我明白这个运算时取int的size,而后与p相乘,但按照运算符优先级,我怎么认为应该是把指针p指向的内容转换成int,而后求该int的size呢?

sizeof 和 *(取指针指向内容) 的优先级是一样的,而且结合律都是从右向左,那么首先解析(int),而后又sizeof 和 * 还有操作数p,就需要从左向右计算表达式的值.. 到底编译程序是怎么解析这个表达式啊?

谢谢


[解决办法]
结合律从来都是从左到右吧
[解决办法]
问过,我明白这个运算时取int的size,而后与p相乘,但按照运算符优先级,我怎么认为应该是把指针p指向的内容转换成int,而后求该int的size呢?
你觉得这样说得过去?求int的size?
[解决办法]
这个表达式都是错的 擦
[解决办法]
sizeof是函数啊,优先级高,这个相当于 apple=(sizeof(int)) * p;
如果是把指针p指向的内容转换成int,而后求该int的size的话,apple=sizeof((int *)p);
[解决办法]

探讨

谢谢各位,但

0. 结合律是从右向左,这点没问题,我很确定
1. 把指针p指向的内容转换成int,而后求该int值的size,这样描述更清楚
2. sizeof 是运算符,这点我很确定

[解决办法]
一元运算符是右结合
(int)可能是操作数也可能是运算符
*可能是一元也可能是二元

如果sizeof的调用不用加括号分析起来是挺乱

不过sizeof的调用形式跟函数一样
不用管优先级先分析sizeof(...)总没错的
[解决办法]
sizeof是单目运算符 除了括号成员级 运算符[]() . -> 它是最高的~ 会先运算
[解决办法]
探讨

谢谢各位,但

0. 结合律是从右向左,这点没问题,我很确定
1. 把指针p指向的内容转换成int,而后求该int值的size,这样描述更清楚
2. sizeof 是运算符,这点我很确定

[解决办法]
sizeof 是运算符,不是函数。
探讨
sizeof是函数啊,优先级高,这个相当于 apple=(sizeof(int)) * p;
如果是把指针p指向的内容转换成int,而后求该int的size的话,apple=sizeof((int *)p);

[解决办法]
如果p是指针,这个语句编译就不会通过。你可以试下。如果p不是指针,那么*只能是乘法操作,那么表达式顺序就好分析了,从左至右。
探讨
这是 c专家编程 里面的问题,而且以前也有人在http://topic.csdn.net/u/20091020/18/c62d8bbb-c91d-4b80-814d-8486c2ced479.html问过,我明白这个运算时取int的size,而后与p相乘,但按照运算符优先级,我怎么认为应该是把指针p指向的内容转换成int,而后求该int的size呢?

sizeof 和 *(取指针指向内容) ……

热点排行