例题(1):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf("a=%d\nb=%d\nc=%d", a, b, c);
system("pause");
return 0;
}
输出:
例题(2):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a = -128;
printf("%u\n", a);
system("pause");
return 0;
}
输出:
例题(3):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a = 128;
printf("%u\n", a);
system("pause");
return 0;
}
输出:
例题(4):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = -20;
unsigned int j = 10;
printf("%d\n", i + j);
//按照补码的形式进行运算,最后格式化成为有符号整数
system("pause");
return 0;
}
输出:
例题(5):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int i;
for (i = 9; i >= 0; i--)
{
printf("%u\n", i);
}
system("pause");
return 0;
}
由于i为无符号整形,所以等到i 为-1时,变为:4294967295
导致程序陷入死循环。
输出如下:
例题(6):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a[1000];
int i;
for (i = 0; i<1000; i++)
{
a[i] = -1 - i;
}
printf("%d", strlen(a));//遇到\0结束
system("pause");
return 0;
}
输出:
例题(7):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
unsigned char i = 0;
int main()
{
for (i = 0; i <= 255; i++)
{
printf("hello world\n");
}
system("pause");
return 0;
}
由于变量为无符号整形,所以导致程序死循环。
输出: