c语言中(a)和a有什么区别?

如题所述

一般是没有区别的,尤其是你把他单独提取出来。C语言中()只有两种作用,一个是作为函数或强制转化的标志,如果(a)前面是个函数名的话,那就表示a是作为那个函数的实参。另一个是作为运算符,能提高里面的运算优先级,把里面的表达式优先算出来,在这里,单独的(a)与a没有区别。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-09
其实没啥区别,(a)是把a显示的分离处理形成一个表达式,要说区别主要体现在宏定义中
#define test(a) (a*a)
#define test1(a) ((a)*(a))

使用中如果a=2之类的,是不会有区别的,但是当a里面有运算符的时候就有区别了。
比如a=2+3的时候
test展开为(2+3*2+3)
test1展开为((2+3)*(2+3)
如此~
第2个回答  2012-12-09
能具体说说吗?我这样只能猜着回答。。。

比如你a是个表达式,写在别的表达式里,这样防止出现错误,比如:

#define a 1024+6

int main()
{
int b=a*4;
printf("b=%d\n",b); getch();
return 0;
}

你这样写 就是b=1024+6*4=1024+24=1048;
但是 如果你写成 #define a (1024+6) 就不会出现错误了,现在就是 b=(1024+6)*4=4120

如果你想问的不是这个,就说清楚了。。。否则我真心没法答。。。追问

sizeof(a)和sizeif a
我知道两个值都是4,但是这两种表达方式有没有区别呢?

追答

有 sizeof a 只能写这一个变量了 但是如果你需要写一个表达式呢?就必须加()了。
就像是你 if(p==0) x++; 这样可以 但是 如果你if里面有许多语句 就得用{}了
我不知道说没说清楚。。。这里的话 你写sizeof(a+6)就得用括号了。

本回答被提问者采纳
第3个回答  2012-12-09
没有什么区别
就是加了一个括号而已

当然 如果使用的地方不同,肯定有很多区别的,但只有这两个,能有什么区别
第4个回答  2012-12-09
有没有区别得看具体情况了
相似回答