面试指南 笔记(三) 数据类型

来源:互联网 发布:601939大智慧赢数据 编辑:程序博客网 时间:2024/05/16 15:40

      在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',所以长度上就不同了……

原创粉丝点击