#include<stdio.h> #include<stdlib.h> #if 1 int check_sys() { int i = 1; return (*(char *)&i); } int main() { int ret = check_sys(); if (1 == ret) printf("小端\n"); else printf("大端\n"); system("pause"); return 0; }
看一个机器是大端还是小端就要看它里面数据的存储方式,小端是低位存在底地址中,可以看到将int *强转成char *,那么机器只会读一个字节八个比特位。然后解引用,看其实0还是1.
char a = -128; char b = 128; //128 1000 0000 //-128 11111111 11111111 11111111 11111111 11111111 11111111 11111111 10000000 //首先截断,都是1000 0000,无符号补24个0 printf("%u,%u\n", a, b); int i = -20; unsigned int j = 10; printf("%d\n", i + j > 0);