C4146错误是Microsoft Visual C++编译器发出的一条警告信息,其具体内容为“一元负运算符应用于无符号类型,结果仍为无符号类型”。这意味着在你的代码中,你尝试对一个无符号整数类型(如unsigned int)使用了负号(-),但编译器指出这样做是不合适的,因为结果仍然会被视为无符号类型。 2. 为什么一元负运算符应用于无...
VS2015中一元负运算符应用于无符号类型的原因和解决 原因: 这一问题是由于编译器SDL安全检查认为这一操作(通常是为无符号整形取负的操作)无效而产生的 这里我们假设定义一个数值为int INT,在32位机上面取值范围是-2147483648~+2147483647, INT变量在后面会取负,比如Temp = -INT, 编译器认为INT有可能大于2147483647...
无符号类型只能保留非负值,因此一元减号 (否定) 在应用于无符号类型时通常没有意义。 操作数和结果都是非负数。 备注 表示负整数文本时,值前面的-将解析为一元反数运算符。 编译器在分析数值后应用运算符。 如果数值适合无符号整数类型的范围,但不适合相应的有符号整数类型,编译器会将该值解释为无符号。 无符号...
//int n = -2147483648; // 错误 1 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 int i = 128; cout << "int" << endl; cout << '+' << i << " : "; cout << bitset<32>(i) << endl; cout << -i << " : "; cout << bitset<32>(-i) << endl...
system("pause");return0; } 测试用例里用到的数据是-2147483648,然后报错error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 这是因为int的最小值是-2147483648,最大值是2147483647,但是我们不能用int n = -2147483648。因为编译器(VS2013)在看到int n = -2147483648;的时候,首先判断2147483648 >...
可能这个原因:项目属性->配置属性->C/C++->SDL检查,选测是或者否
结果(发生溢出后程序显示的结果)必定与前一个结果(运算本身的正确答案)对 2^n 取模后的数值相等。 例如:如果对无符号的 16 位数(16-bit)65535 加 1,其结果可以保证为 0。 7.1.5 读/写整数 当改变整数的数据类型时,就要关注这种改变对程序其他部分的影响,尤其要检查该数据是否用在进行读 ...
这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。原码反码补码在计算机内,定点数有3种表示法:原码、反码和补码所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位 10、,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数...
1.有符号整型变量可以储存正值或负值 2.而无符号整型变量只能储存正值和0。 浮点型变量储存带有小数部分的值(即,实数)。 如下表所示: 既然int和long 类型完全一样,为何还要把它们归为两个不同的类型? 在64位英特尔系统下,int和long类型的大小完全相同。但是,在其他系统中它们可能不同。
整型变量分为两类: 1.有符号整型变量可以储存正值或负值 2.而无符号整型变量只能储存正值和0。 浮点型变量储存带有小数部分的值(即,实数)。 如下表所示: 既然int和long 类型完全一样,为何还要把它们归为两个不同的类型? 在64位英特尔系统下,int和long类型的大小完全相同。但是,在其他系统中它们可能不同。