printf总是会把一个char提升为int么?
int main() { char a=0x7f; char b=~a; printf("%x\n",b); return 0; }#include <stdio.h>int main(int argc,char *argv[]) { char a=0x7f; char b=~a; printf("%2x\n",b&0xff); return 0; }
[解决办法]
int main() { char a=0x7f; char b=~a; printf("%x\n",(b&0x0ff)); return 0; }
[解决办法]
ps:提神宽度的不是printf,而是位操作~
[解决办法]
说错了,确实是printf的%x造成的,不过高字节上有位操作痕迹,估计是栈的内存造成的~
[解决办法]
等有空去研究下再说~
[解决办法]
printf("%.02x\n",b);
[解决办法]
[User:root Time:16:20:26 Path:/home/liangdong/c]$ ./output 80[User:root Time:16:20:27 Path:/home/liangdong/c]$ cat src/main.c #include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char* const argv[]) { char n = 0x80; printf("%02x\n", (unsigned char)n); return 0;}