今天同学问我一个小问题,说:
int i = -20;
unsigned int j = 10;
cout<<(i+j)<<endl;
输出的结果是多少?
我想肯定不回是-10,怎么会这么简单!自己在VC里面实验了一下,果然结果不是-10,输出的是4294967286。结果我就仔细的考虑了一下,然后有写下了下面一段:
if(i>j)
cout<<"i is bigger"<<endl;
else
cout<<"j is bigger"<<endl;
结果又是出人意料,输出的是“i is bigger”。
分析了一下得到了这样的结论,当编译器对两个不同类型的数字进行操作的时候,编译器会自动的都转型成范围较大的那个,以避免溢出。所以,很自然的int就被转换成了unsigned int。哈哈,这样解释就合理了。
分享到:
相关推荐
### `int`与`unsigned int`的区别 #### 值的范围 - **`int`**:这是一个有符号整数类型,它可以存储正数、负数和零。在大多数现代系统上,`int` 的大小为32位,能够表示的范围大约是从 -2,147,483,648(即 -2^31)...
在C++编程语言中,`float`、`int`和`unsigned int`是三种基本的数据类型,它们在内存中有着不同的表示方式。本程序旨在帮助开发者理解这些数据类型的内部存储机制,并提供它们之间的转换功能。这对于我们深入理解...
标题“volatile_unsigned_int”以及描述“讲述了volatile_unsigned_int地址映射的使用说明”指向了C语言中特殊的关键词“volatile”以及其与“unsigned int”类型的结合使用。该知识点主要涉及硬件编程,特别是在...
把unsigned int 对调
我们主要来看一下signed和unsigned与int之间的联系与区别。什么叫做有符号,什么叫做无符号这个问题其实很简单,比如:5和-5,5没有符号,-5有符号。简单吧。但是在计算机中的这种符号可不简单。我们分别来看一下:在...
1、int ReadCard(int portnumber,int tracknumber,int timeout,unsigned char* track1,int* track1len,unsigned char* track2,int* track2len,unsigned char* track3,int* track3len) 2、int WriteCard(int port...
unsigned int alarm(unsigned int seconds); ``` **功能说明:** `alarm`函数用于设置一个定时器,在`seconds`秒后向当前进程发送`SIGALRM`信号。如果`seconds`为0,则取消先前设置的`alarm`定时器,并返回剩余的...
void address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) { main_W_com_data(0x0020,x1);//设置X坐标位置 main_W_com_data(0x0021,y1);//设置Y坐标位置 main_W_com_data(0x0050,x1)...
在本例中,`volatile`被用于指针类型,具体是`volatile unsigned int*`和`volatile unsigned char*`,这表明通过这些指针访问的内存位置的值可能会在任何时间点被外部因素改变。 #### 3. 宏定义的具体含义 让我们...
3. **int**: 在Keil MDK-ARM中,`int`同样占用4个字节(32位),这与32位ARM处理器的字长相匹配。因此,`int`的最大值为2147483647,最小值为-2147483648。 4. **long**: `long`类型在Keil MDK-ARM中也占用4个字节...
#define uint unsigned int #define RdCommand 0x01 //定义ISP的操作命令 #define PrgCommand 0x02 #define EraseCommand 0x03 #define WaitTime 0x01 //定义CPU的等待时间 sfr ISP_DATA=0xe2 //寄存器申明 ...
用C++标准库编写,您可以把unsigned int的上限无限扩展,直至你的计算机的内存被耗尽为止。它的作用是诸如计算任意一个正整数的阶乘、执行任意长度的整数的计算等;当然,你也可以根据源码来编写整数、实数等更为...
代码如下:#include <stdio>int main(int argc, char *argv[]){ unsigned int max_int = 0-1; printf(“The max value of unsigned int on 32 machine: %u/n”, max_int);} 代码如下:#include <stdio>int main(int ...
struct zint_symbol* my_symbol = ZBarcode_Create(); my_symbol->symbology = BARCODE_QRCODE; my_symbol->scale = 2; my_symbol->show_hrt = 0; ZBarcode_Encode_and_Buffer(my_symbol, (unsigned char *)m_key...
- `intmax_t` 和 `uintmax_t`:这是系统能表示的最大有符号和无符号整数类型,通常对应于 `long long int` 和 `unsigned long long int`。 5. **类型别名**: - `intN_t` 和 `uintN_t`:其中 `N` 代表整数的位数...
在进行`unsigned int`与`int`之间的运算时,如果`int`是负数,它会被转换为等值的无符号数进行计算。这是因为无符号类型不能表示负数,因此在混合类型运算中,有符号类型通常会被提升到无符号类型。 第一个例子中,...
typedef int (*ZINT_ENCODE)(unsigned char* out, const char* in, int len, int options); ZINT_ENCODE zint_encode = (ZINT_ENCODE)GetProcAddress(hDll, "zint_encode"); // 使用zint_encode函数进行条码编码...
- `void xxtea_encrypt(unsigned char *data, int length, unsigned char *key)`:用于加密数据。 - `void xxtea_decrypt(unsigned char *data, int length, unsigned char *key)`:用于解密数据。 在压缩包`XXTEA_...
unsignedInt64ToBytes unsignedInt48ToBytes unsignedInt40ToBytes unsignedInt32ToBytes unsignedInt24ToBytes unsignedInt16ToBytes unsignedInt8ToBytes Bytes -> Uint unsignedBytes2Int64 unsignedBytes2Int48...