char a=0x123FFF; printf("%d,",a); a=127; printf("%d",++a); 希望有详细解答哦谢谢~

char a=0x123FFF;
printf("%d,",a);
a=127;
printf("%d",++a);

0x123fff是十进制的1196031 % 256 = 255 也就是 -1 所以,第一个输出-1
第二个很简单了 ,输出-128.

1、因为a是char类型,取值范围是 -128 ~ 127,0x123fff显然是溢出了,于是进行取模操作,char类型占一个字节,所以模为256,取模后剩下255,因为char类型是有符号数,所以是-1.
2、127是char类型所能表示的最大值,+1后就是-128了,你按机器码操作更容易看一些。。追问

为什么+1后就是-128了呢,为什么这个溢出不取模。
谢谢~

温馨提示:内容为网友见解,仅供参考
无其他回答

char a=0x123FFF; printf("%d,",a); a=127; printf("%d",++a); 希望...
1、因为a是char类型,取值范围是 -128 ~ 127,0x123fff显然是溢出了,于是进行取模操作,char类型占一个字节,所以模为256,取模后剩下255,因为char类型是有符号数,所以是-1.2、127是char类型所能表示的最大值,+1后就是-128了,你按机器码操作更容易看一些。。

用C语言求一个数的绝对值并输出
绝对值好像是abs函数吧 直接调用 如果不直接调用的话 就用If else 如果x大于0 直接输出 如果x小于0 就用0减去x赋值给y再输出 include<stdio.h> include<stdlib.h> int main(){ int x;scanf("%d",&x);x=abs(x);printf("%d",x);return 0;} include<stdio.h> include<stdlib.h...

C语言怎样判断合法转义字符
'\\0'是八进制的转移字符,如果看到:\\087这就是非法的,'\\0x'表示十六进制,还有一些必备的如:'\\n','\\r'这些。和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否...

C语言中如何判断是不是合法转义字符?
'\\0'是八进制的转移字符,如果看到:\\087这就是非法的,'\\0x'表示十六进制,还有一些必备的如:'\\n','\\r'这些。和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否...

C语言 char型 二维数组问题 急!!!
\/\/这里相应的改成p[i]=(char *)malloc(4000*sizeof(char));\/\/内容相同。可以看看下面对malloc的解释 printf("内存分配成功!\\n");} 这个部分在VC6.0中能够正确运行,希望能够解决你的问题。这个malloc就是动态分配内存,具体的用法为 原型:extern void *malloc(unsigned int num_bytes);头文件...

有关C语言试题
A)12345 B)123 C) 45 D) 345 22.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是( )。int a1,a2; char c1,c2;scanf("%d%d",&a1,&a2);scanf("%c%c",&c1,&c2); A) 1020AB<CR> B)10 20<CR>AB<CR> C)10 20 AB<CR...

VC 实现 输出 Bmp 图像中所有像素点的灰度值到文本
bool ReadInfo(char FilePath[]);\/\/写图像灰度信息到文本文件 bool WriteToTxt(char FilePath[]);CBmp();virtual ~CBmp();private:BITMAPFILEHEADER m_sBMFH; \/\/位图文件头 BITMAPINFOHEADER m_sBMIH; \/\/位图信息头 RGBQUAD * m_pPalette; \/\/调色板 BYTE * m_pBData; \/\/位图数据 };C...

相似回答
大家正在搜