求详解c语言题目

希望每一道题给予详细讲解

7. 简单,C
8。 题目不全
9. B,sizeof不是一个函数,是一个关键字。在编译器会展开为常量
10. C 2B即2^16=0-65535
11,D,double类型。C语言有隐式类型提升char>short>int>float>double,对于类型有疑惑的问题,最简单的验证方法是写一段代码,用sizeof求一下大小,就可以知道类型了,比如
int main(void)
{
char w;int x;float y;double z;
printf("%d",sizeof(w*x+z-y));
}
输出为8,说明该表达式类型是double
12. C,逗号表达式,从左到右依次计算,最后返回最右边表达式的值
13. B 14.以0开头的是八进制,以0x开头的是16禁止,16禁止每位是[0-F],不能为g
15. 你这套题可能比较老了,出题者不严谨,认为int是16bit,实际上现在32位CPU上都是32bit,如果int是16bit,则最终x的结果为0xffbc(会有溢出告警),32bit下不溢出。
16. C,同上
17,int在机器中是补码形式存在。(题目选项不全)
18. 符合语法的赋值有两个,c和D,赋值的要求是左边是一个左值(变量,不能是表达式)
19. B \0开头的是8进制数,后面的有效数字为[0-8]
20 . C 同12题,逗号表达式,从左到右依次计算,最后返回最右边表达式的值
f=(3.0,4.0,5.0),(2.0,1.0,0.0) 等价于 f = 5.0,0.0等价于f=0.0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-29
十二题,c选项 因为是逗号表达式,所以是一步一步算,但是最后输出是最后一个表达式的值。即X=6,此时X为6,x+1为7,Y=6,此时Y为6,X+Y为12,最后输出也是12
第2个回答  2013-05-29
第11题应该选A把,因为不同数据类型进行运算时低级会自动向高级转换的,如int x;float y;则x+y则为float型。从低级到高级的顺序为char《int《float《double。
第12题是选C。这些选项全是逗号表达式,逗号表达式是从左至右,输出最右边的表达式的值,注意是表达式,不是变量的值。在c中表达式的值以此为x=6,然后x+1这个表达式为7,x仍为6,x+y=6+6为12
等等,,第11题还有个double的选项把,那就选D。double的那个!追问

11题选b

追答

你确定答案是对的?如果确定的话我去问问,他们一致的答案都是D,我们学了的

第3个回答  2013-05-29
这些都是比较基础的语法问题,实在没必要每题详解,至少每题谭浩强那本书都有,你可以挑几题我给你讲
相似回答