vlambda博客
学习文章列表

【C语言进阶篇】之变量

点击上方“蓝字”关注我们吧
【C语言进阶篇】之变量
C语言中有哪些基本类型的变量

char, short, int, long, float, double

【C语言进阶篇】之变量
哪些变量可以加unsigned?

可以加:char, short, int, long

🙅‍可以加:float, double

【C语言进阶篇】之变量
考考你

int *p1; //p1是一个指向int类型的指针

int const *p4; //p4和p2表示相同的意思,只是写法不同


【C语言进阶篇】之变量
32位和64位基本数据类型的字节长度(典型配置)

      

数据类型

Windows

Linux

32位

64位

32位

64位

char

1

1

1

1

short (int)

2

2

2

2

int

4

4

4

4

long   (int)

4

4

4

8

long long

8

8

8

8

float

4

4

4

4

double

8

8

8

8

long   double

8

8

12

16

char*   指针类型

4

8

4

8

size_t

4

8

4

8

Bool

1

1

1

1

注:long long是C++的64位整型的基本类型,从C99开始引入这个概念, C++11官方正式标准如下:

long long - target type will have width of at least 64 bits.(since C++11)

【C语言进阶篇】之变量
小练习a

如下代码在32位系统中的输出结果是()

void func(char acHello[])

{

printf(“%d”, sizeof(acHello));

return;

}

void main()

{

char acHello[]=”Hello”;

example(acHello);

return;

}

结果:4

小练习b

在32位系统中,有如下代码:

char str[] = ”\\\\”;

char *p = str;

int n = 100;

则sizeof(str), sizeof(p), sizeof(n)分别是多少?

结果:4 4 4

补充:strlen(“\\\\”)=4,sizeof(“\\\\”)=5,你知道为什么吗?

变量转换

int main()

{

     short i = 65535;

     printf("i=%d\n", i);

     return 0;

}

结果:-1

分析】:因为内存中65535存储内容的16进制表示为:0x0FFFF,将此值传递给16位的变量i时,i只能接受到0xFFFF;看见首位为1,编译器会认为i是个负值,至于负值的绝对值=源码取反(0x0000)+1 = 0x0001。因此最终输出-1。