网易云课堂_艾叔:零基础一站式C语言|C程序设计精讲_章节5整型

课时35整型基础

C的10种整型数据类型

sizeof(char)=1
sizeof(unsigned char)=1
sizeof(short)=2
sizeof(unsigned short)=2
sizeof(int)=4
sizeof(unsigned int)=4
sizeof(long)=4
sizeof(unsigned long)=4
sizeof(long long)=8
sizeof(unsigned long long)=8
请按任意键继续. . .

#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("sizeof(char)=%zd
", sizeof(char));
	printf("sizeof(unsigned char)=%zd
", sizeof(unsigned char));

	printf("sizeof(short)=%zd
", sizeof(short));
	printf("sizeof(unsigned short)=%zd
", sizeof(unsigned short));

	printf("sizeof(int)=%zd
", sizeof(int));
	printf("sizeof(unsigned int)=%zd
", sizeof(unsigned int));

	printf("sizeof(long)=%zd
", sizeof(long));
	printf("sizeof(unsigned long)=%zd
", sizeof(unsigned long));

	printf("sizeof(long long)=%zd
", sizeof(long long));
	printf("sizeof(unsigned long long)=%zd
", sizeof(unsigned long long));

	system("pause");

	return 0;
}

课时40整型数据的存储(字节序)

int data = 0x12345678;

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int data = 0x12345678;

	char *p = (char *)&data;

	printf("%p %hhx
", &(p[0]), p[0]);

	printf("%p %hhx
", &(p[1]), p[1]);

	printf("%p %hhx
", &(p[2]), p[2]);

	printf("%p %hhx
", &(p[3]), p[3]);

	system("pause");

	return 0;
}

输出

00000034B476FBE4 78
00000034B476FBE5 56
00000034B476FBE6 34
00000034B476FBE7 12
请按任意键继续. . .

78是低字节,12是高字节。

这是小端字节序

字节序分为:小端字节序,大端字节序、网络字节序。

小端字节序:低字节存于内存低地址;高字节存于内存高地址。

大端字节序:高字节存于内存低地址;低字节存于内存高地址。

网络字节序作为中介,是大端字节序。

课时41整型转换、扩展与截断

扩展:

char src;

int dst;

dst = (char)src;

src有符号,扩展位=符号位,符号位0扩展位也是0,符号位1扩展位也是1

src无符号,扩展位=0

截断:

int src;

char dst;

dst =(char)src;

从低字节开始,截取sizeof(dst)个字节的十六进制数值

整型转换,只与十六进制数值有关系

int i = -1;

整数-1

0xFFFFFFFF十六进制数值

扩展:

int to unsigned int

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int int_num = -1;
	unsigned int uint_num = (unsigned int)int_num;//强制转换,显式转换

	printf("%x %d
", int_num, int_num);
	printf("%x %u
", uint_num, uint_num);

	system("pause");

	return 0;
}

ffffffff -1
ffffffff 4294967295
请按任意键继续. . .

char to int

char to unsigned int

#include <stdio.h>
#include <stdlib.h>

int main()
{
	char char_num = -1;
	int int_num = (int)char_num;
	unsigned int uint_num = (unsigned int)char_num;

	printf("%hhx %hhd
", char_num, char_num);
	printf("%x %d
", int_num, int_num);
	printf("%x %u
", uint_num, uint_num);

	system("pause");

	return 0;
}

ff -1
ffffffff -1
ffffffff 4294967295
请按任意键继续. . .

char to int

char to unsigned int

#include <stdio.h>
#include <stdlib.h>

int main()
{
	char char_num = 1;
	int int_num = (int)char_num;
	unsigned int uint_num = (unsigned int)char_num;

	printf("%hhx %hhd
", char_num, char_num);
	printf("%x %d
", int_num, int_num);
	printf("%x %u
", uint_num, uint_num);

	system("pause");

	return 0;
}

1 1
1 1
1 1
请按任意键继续. . .

unsigned char to int

unsigned char to unsigned int

#include <stdio.h>
#include <stdlib.h>

int main()
{
	unsigned char char_num = 0xFF;
	int int_num = (int)char_num;
	unsigned int uint_num = (unsigned int)char_num;

	printf("%hhx %hhd
", char_num, char_num);
	printf("%x %d
", int_num, int_num);
	printf("%x %u
", uint_num, uint_num);

	system("pause");

	return 0;
}

ff -1
ff 255
ff 255
请按任意键继续. . .

截断:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int int_num = -0x12345678;
	short short_num = (short)int_num;
	unsigned short unshort_num = (unsigned short)int_num;

	printf("int %x %d
", int_num, int_num);
	printf("short %hx %hd
", short_num, short_num);
	printf("unshort %hx %hu
", unshort_num, unshort_num);

	system("pause");

	return 0;
}

int edcba988 -305419896
short a988 -22136
unshort a988 43400
请按任意键继续. . .

课时42整型常量

sizeof(0xFFLL), sizeof(0xFFLLu)//long long, unsigned long long

sizeof(0xFFL), sizeof(0xFFLu)//long, unsigned long

#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("sizeof %u %u
", sizeof(0xFFLL), sizeof(0xFFLLu));//long long, unsigned long long
	printf("sizeof %u %u
", sizeof(0xFFL), sizeof(0xFFLu));//long, unsigned long

	system("pause");

	return 0;
}

sizeof 8 8
sizeof 4 4
请按任意键继续. . .

原文地址:https://www.cnblogs.com/denggelin/p/6146224.html