apple=sizeof(int)*p解决方案
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);
[解决办法]
[解决办法]一元运算符是右结合
(int)可能是操作数也可能是运算符
*可能是一元也可能是二元
如果sizeof的调用不用加括号分析起来是挺乱
不过sizeof的调用形式跟函数一样
不用管优先级先分析sizeof(...)总没错的
[解决办法] sizeof是单目运算符 除了括号成员级 运算符[]() . -> 它是最高的~ 会先运算
[解决办法][解决办法]sizeof 是运算符,不是函数。
[解决办法]如果p是指针,这个语句编译就不会通过。你可以试下。如果p不是指针,那么*只能是乘法操作,那么表达式顺序就好分析了,从左至右。