速度略慢……
在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、VOID类型。构造数据类型又包括数组、结构体和联合(union,这个我几乎没用过)。
第一题:int a = 167; int b = 025; printf("%d %d", a, b);
本题涉及各种进制的表示。比如:
八进制整数以0开头,并且通常是无符号数;十六进制数以0X或0x开头。木有二进制。
顺便提一下printf基本的转换说明:(摘自C程序设计语言 中文第二版 P135)
%d - decimal, %i,integer,不过,这个从来没用过……十进制的。
%u - unsigned 无符号十进制
%o - octal 无符号八进制
%x - hexadecimal 无符号十六进制
%c - char 单个字符
%s - string 字符串中字符,直到遇到'\0'或已打印了由精度指定的字符数为止。
%f - float 浮点
%e - exponential 自然对数形式(貌似从来没用到)
%g 书上的说明就没看懂……
%p - pointer 指针(取决于具体的实现)
%% 打印%……
第二题:short s1 = 1; s1 = s1 + 1L; s1 += 1L; 正确?
这个类型转换看得略糊涂,只知道两点:
1、+= 已经执行了类型强制转换。
2、在数据安全的情况下,大类型数据向小类型数据转换一定要显式地强制转换。
所以,第二句错了,第三句对了。
第三题:char x[] = "abcd" 和 char y[] = {'a', 'b', 'c', 'd'}不同吗?
这个倒是挺简单的,不过经常没注意而已,因为双引号的字符串后面还有一个'\0',所以长度上就不同了……
最后我在这里随便吐槽下这个莫名其妙的排版……