0x10000与int/short越界

将0x10000赋给一个int变量,在不同编译器中的结果

1、在VC6.0中:

 1 // 0x10000是否越界int.cpp :
 2 // 看看0x10000是否超了int,
 3 // 理论上1个char是8bit,就是0xFF;1个int是16bit,就是0xFFFF;所以0x10000应该是超的。
 4
 5 //#include "stdafx.h"
 6
 7
 8 int main(int argc, char* argv[])
 9 {
10     int i=0x10000;
11     int ii=(int)0x10000;
12     short s=0x10000;
13     return 0;
14 }

通过调试发现,i与ii都是65536,s是0。

对于32位系统下安装的VC6,int是32位,short是16位,s是获取了0x10000的后16bit,得到结果为0x0000,即为0.

2、在IAR中,工程目标MCU为16位的MSP430F5418A:

3、在CCS中,MCU仍为MSP430F5418A:

时间: 2024-10-01 00:38:01

0x10000与int/short越界的相关文章

JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs

代码片段: byte bmax, bmin; short shmax, shmin; char cmax, cmin; int imax, imin; long lmax,lmin; float fmax,fmin; double dmax,dmin; fmax = Float.MAX_VALUE; fmin = Float.MIN_VALUE; dmax = Double.MAX_VALUE; dmin = Double.MIN_VALUE; bmax = Byte.MAX_VALUE; bm

c++ 中关于int,unsigned int , short的关系与应用

int类型比较特殊,具体的字节数同机器字长和编译器有关.如果要保证移植性,尽量用__int16 __int32 __int64吧 __int16.__int32这种数据类型在所有平台下都分配相同的字节.所以在移植上不存在问题. 所谓的不可移植是指:在一个平台上编写的代码无法拿到另一个平台上运行时,不能达到期望的运行结果. 例如:在32为平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节,那么在16位上编译出来的exe, 其中是

char/unsigned char/int/short 存储范围

Type Storage size Value range char 1 byte -128 to 127 or 0 to 255 unsigned char 1 byte 0 to 255 signed char 1 byte -128 to 127 int 2 or 4 bytes -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 unsigned int 2 or 4 bytes 0 to 65,535 or 0 to 4,294,9

【C/C++语言】int 在计算机内部的存储

int在32位计算机中占4个字节,主要是想弄清楚这4个字节的在内存中存放的顺序. 1 #include <iostream> 2 3 using namespace std; 4 5 typedef struct int_char 6 { 7 int a; 8 unsigned char *b; 9 }; 10 11 int main() 12 { 13 int_char A; 14 int i; 15 //test int; 16 A.a=0x01ab02cd; 17 A.b=(unsign

&lt;14&gt;【理解】整型变量修饰符介绍+【掌握】short、long对整型变量的修饰+

[理解]整型变量修饰符介绍 整型变量修饰符 改变整型变量占用的存储空间 int short long long long(32位系统下long是只占四个字节,long long占八个字节: 64位系统下long是占八个字节,long long也占八个字节,所以long long 是为32位系统发明的) 改变一个数的符号 signed unsignded [掌握]short.long对整型变量的修饰 #include <stdio.h> int main(int argc, const char

c++ int 负数 补码 隐式类型转换

unsigned y = 1; int x = -2; cout << x + y << endl; 对于上述的结果为 这里面有一个负数的补码问题和不同类型之间的隐式类型转换问题 首先负数的表示方法是负数的绝对值的二进制码取反再加1,-2的补码计算就是: 0000 0000 0000 0010->1111 1111 1111 1101->1111 1111 1111 1111 1110 而整数的加减在内部都是通过加运算实现的,主要原因是使用补码,可以将符号位和其它位统一

(转)Java进阶java int与Integer的区别

Java进阶java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象,用一个引用指向这个对象. 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而Integer 是后者(也就是一个类):因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null. 2.初始化时: int i =1; Integer i= new Integer

无符号整型unsigned int、unsigned long、usigned long long、size_t比较和格式控制

位数比较 由于数据的长度和平台相关,所以基于 64 位系统比较. Windows Linux unsigned int 32 bits/4294967295 32 bits unsigned long 32 bits 64 bits/18446744073709551615 unsigned long long 64 bits 64 bits size_t 32 bits 64 bits 可以看到,size_t 和 unsigned long 比较同步.另外 ssize_t 和 size_t 的

java学习资料

必须养成好的的编码习惯:缩进(用空格).注释.命名约定. 大小写敏感. 单独的":"代表一条空语句. main函数是我们整个程序的执行入口所以必须是静态公开的. 必须写成这样:  public static void main(String[]args){...} 生成jar包: 在eclipse里,选中要打包的几个文件,右键-Export-写文件名-Next-Next-选main方法的class-finish 在jar包的同一文件夹下,新建一个空文档,写"java -jar