如果将负值赋给无符号变量会发生什么?

What happens if I assign a negative value to an unsigned variable?(如果将负值赋给无符号变量会发生什么?)
本文介绍了如果将负值赋给无符号变量会发生什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很想知道如果我将一个负值赋给一个无符号变量会发生什么.

I was curious to know what would happen if I assign a negative value to an unsigned variable.

代码看起来有点像这样.

The code will look somewhat like this.

unsigned int nVal = 0;
nVal = -5;

它没有给我任何编译器错误.当我运行程序时,nVal 被分配了一个奇怪的值!会不会是一些 2 的补码值被分配给了 nVal?

It didn't give me any compiler error. When I ran the program the nVal was assigned a strange value! Could it be that some 2's complement value gets assigned to nVal?

推荐答案

官方回答 - 第 4.7 节 conv.integral

For the official answer - Section 4.7 conv.integral

"如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模 2n 其中 n 是使用的位数来表示无符号类型.[注意:在二进制补码表示中,这种转换是概念性的,位模式没有变化(如果没有截断).-end note]

"If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source integer (modulo 2n where n is the number of bits used to represent the unsigned type). [ Note: In a two’s complement representation, this conversion is conceptual and there is no change in the bit pattern (if there is no truncation). —end note ]

这实质上意味着,如果底层架构存储在不是二进制补码的方法中(如有符号幅度或一个补码),则转换为无符号的行为必须表现得好像它是二进制补码一样.

This essentially means that if the underlying architecture stores in a method that is not Two's Complement (like Signed Magnitude, or One's Complement), that the conversion to unsigned must behave as if it was Two's Complement.

这篇关于如果将负值赋给无符号变量会发生什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Rising edge interrupt triggering multiple times on STM32 Nucleo(在STM32 Nucleo上多次触发上升沿中断)
How to use va_list correctly in a sequence of wrapper functions calls?(如何在一系列包装函数调用中正确使用 va_list?)
OpenGL Perspective Projection Clipping Polygon with Vertex Outside Frustum = Wrong texture mapping?(OpenGL透视投影裁剪多边形,顶点在视锥外=错误的纹理映射?)
How does one properly deserialize a byte array back into an object in C++?(如何正确地将字节数组反序列化回 C++ 中的对象?)
What free tiniest flash file system could you advice for embedded system?(您可以为嵌入式系统推荐什么免费的最小闪存文件系统?)
Volatile member variables vs. volatile object?(易失性成员变量与易失性对象?)