首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

printf总是会把一个char提升为int么?解决思路

2012-06-01 
printf总是会把一个char提升为int么?C/C++ codeint main() {char a0x7fchar b~aprintf(%x\n,b)retu

printf总是会把一个char提升为int么?

C/C++ code
int main() {    char a=0x7f;    char b=~a;    printf("%x\n",b);    return 0; }

打印的结果是0xffffff80
我希望打印的结果是0x80.看起来printf把char类型的b提升成了整型数。
有没有可以不做整形提升(我知道整形提升的知识,在c99的标准里面),直接打印一个0x80.;

[解决办法]
C/C++ code
#include <stdio.h>int main(int argc,char *argv[]) {    char a=0x7f;    char b=~a;    printf("%2x\n",b&0xff);    return 0; }
[解决办法]
C/C++ code
int main() {    char a=0x7f;    char b=~a;    printf("%x\n",(b&0x0ff));    return 0; }
[解决办法]
ps:提神宽度的不是printf,而是位操作~
[解决办法]
说错了,确实是printf的%x造成的,不过高字节上有位操作痕迹,估计是栈的内存造成的~
[解决办法]
等有空去研究下再说~
[解决办法]
printf("%.02x\n",b);

[解决办法]
探讨
printf("%.02x\n",b);

[解决办法]
C/C++ code
[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;} 

热点排行
Bad Request.