【c语言】char无符号超范围的结果

// char无符号超范围的结果

#include <stdio.h>

int main()
{
	unsigned char a = 200;
	unsigned char b = 100;
	unsigned char c = 0;
	c = a + b;
	printf("%d %d\n", a + b, c);
	// c是无符号char,范围0~255,300超范围了,所以结果为44
	return 0;
}

<img src="http://img.blog.csdn.net/20150508171802933?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

时间: 2024-10-08 09:26:54

【c语言】char无符号超范围的结果的相关文章

【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

原文:[ c语言中无符号和有符号的加法运算][深入理解]--[sky原创] 第一题 #include<stdio.h> int main() { unsigned int a=6; int b=-20; printf("%d\n",a+b); (a+b)>6? puts(">6"):puts("<=6"); return 0; } 答案是:>6 第二题 #include<stdio.h> int m

c语言中无符号和有符号之间的运算

关于计算机中有符号,无符号数值的表示以及它们之间的运算 是基本知识,但工作这么多年也不敢说完全搞明白透彻. 这几天在将知识点进行了一些梳理,并做了一些有意思的试验. 计算机中,数值的表示和运算都是用补码表示的. 正数的补码就是其本身: 负数的补码则是最高符号位为1,其余位取反加1. 比如-5表示为0xFFFB, 而5则表示为0x0005. 这里,第一个需要注意的问题就是 有符号数和无符号数之间的运算. c语言规定,先一律转成无符号数,然后再进行运算. 比如,  int iValue1 = -5;

unsigned char 无符号整形 减法运算

对于一个字节来说: unsigned char :     0  ~  255              0000 0000  ~ 1111 1111 char :-128  ~  127              -128  ~  -1     1000 0000  ~ 1111 1111                     0  ~  127     0000 0000  ~   0111 1111 (-128 的补码是1000 0000,它没有对应的原码.反码,其推导是根据 -128

C语言进阶剖析第二课--有符号和无符号

①计算机中的符号位 数据类型的最高位用于标识数据的符号 -最高位为1,表明这个数为负数 -最高位为0,表明这个数为正数 ②在计算机内部用补码表示有符号数 正数的补码为正数本身: 负数的补码为负数的绝对值各位取反再加1: ③在计算机内部用原码来表示无符号数 -无符号默认为正数 -无符号数没有符号位 对于固定长度的无符号数 MAX_VALUE + 1 =  MIN_VALUE MIN_VALUE - 1 = MAX_VALUE ④如果无符号数和有符号数相加,有符号数会转成无符号数,并且如果有符号数是

C语言进阶——有符号与无符号02

在计算机的内部,我们所有的信息都是由二进制数字组成的 有符号数的表实法: 在计算机内部用补码的方式表实有符号数 正数的补码位正数的本身 负数的补码为其绝对值取反然后加一得到 例如-7 他在计算机内部的是1111 1001          是这样得到的 7->111->0000 0111->1111 1000->1111 1001 无符号整数的表示: 在计算机内部用原码表实无符号整数 无符号整数默认为正数 无符号整数没有符号位 对于固定长度的无符号整数: max+1=min min

C语言无符号和有符号的区别

C语言定义一个int类型时,默认是有符号数,关键字signed常省略,如: int a; signed int a; signed a; 这三句是一样的定义 定义无符号数时,必须加关键字unsigned,如: unsigned int a ; unsigned a; 无符号关键字unsigned,只适用于int short long char四种变量,浮点型数据只有有符号类型. 那么为什么float会没有无符号呢?C语言中,整型是采用二进制表示的,而浮点数却是按照整数部分,小数部分,指数部分存放

C语言 有符号、无符号

C语言 有符号.无符号 有符号无符号说明 一.有符号 signed char 8bit 取值范围:-2^7 ~ 2^7-1 . -128~127 int 32bit 取值范围:-2^31 ~ 2^31-1 . -2147483648~2147483647 long long 64bit 取值范围:-2^63 ~ 2^63-1 #include <stdio.h> int main() { signed int a = -1089474374; //定义有符号整型变量a printf("

【c语言】有符号数据类型与无符号数据类型的计算

// 有符号数据类型与无符号数据类型的计算 #include <stdio.h> int main() { char c;// -128~127 unsigned char uc;//0~255 unsigned short us;// 0~65535 c = 128; uc = 128; // 字符型给短整型赋值有默认的类型提升,前边八位补其符号位 us = c + uc; // us = -128 + 128 = 0即1111 1111 1000 0000 + 0000 0000 1000

有符号char转无符号short

char ch = 255; cout<<(int)ch<<endl; //-1 unsigned short d = ch; short dd = ch; cout<<d<<endl;//65535(2^16 - 1) cout<<dd<<endl;//-1 要点是:这里char是有符号的!.(255) = 0xff.因为char有符号,所以拿出来的整型值是-1,将-1给无符号的unsigned short d 会将ff放在低字节的