设为首页 加入收藏

TOP

C语言运算符优先级普遍存在的一个深层次误区(二)
2014-11-23 22:25:45 来源: 作者: 【 】 浏览:2
Tags:语言 运算 优先 普遍 存在 一个 深层次 误区
加的另一个操作数,这个操作数必须是高级表达式。
由于 (int *) & i 不是 sizeof 的高级表达式或同级表达式,所以希望对它做sizeof运算必须加括号,写成sizeof ((int *) & i)。(注:((int *) & i)构成了一个基本表达式)
而写成 sizeof (int *) & i 的话,就如同前面在3+6加上*一样不是(3+6)*2的含义而是3+(6*2)的含义一样,表达的可能是另一种含义,这个含义是
( sizeof (int *) ) & i
这里&其实是二元&运算。

既然是&是二元&运算,前面代码中没有给 i 初值 显然不妥,正确的代码是:

view sourceprint #include

#include

int main( void )

{

int i = 3 ; //whatever

printf(" %u " , sizeof (int *) ) ;

printf(" %u " , sizeof (int *) & i ) ;

return 0;

}

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言的大数相加 下一篇用C语言判断整数的正负零特性

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: