精华内容
下载资源
问答
  • intlong和long long的区别

    千次阅读 2017-05-30 15:32:35
    数据类型和编译器位数

    转载:http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html#cmt_3297413

    突然间就想到了longint到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》:

    shortlong两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数。int通常代表特定机器中证书的自然长度。short类型通常为16位,long类型通常为32位,int类型可以为16位或32位。各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:shortint类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。

    下面一段话选自《C++Primer》:

    shortintlong类型都表示整型值,存储空间的大小不同。一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的)。

    这时候我又想到了,不同的机器位下,这三个类型到底有什么区别,short就不说了,从上面两段介绍来说,short应该都是16位了,那么intlong呢?百度一下(我不喜欢百度,但是google不稳定,只能百度了)。先看列表:

    类型

    16位系统/字节

    32位系统/字节

    64位系统/字节

    char

    1

    1

    1

    char*

    2

    4

    8

    short

    2

    2

    2

    int

    2

    4

    4

    long

    4

    4

    8

    longlong

    8

    8

    8

    从表中可以看出这么几个问题,int类型在64位系统下竟然是4个字节32位的。还有,这些玩意儿到底跟什么有关系?是谁在控制着?从网上扒了各种解释,大概有这么两点:

    164位系统下,编译器为了向前兼容,将int类型自动编译为4个字节的了;

    2、这些个玩意儿就是编译器来控制的,不同的编译器将int类型编译成不同长度的,所以,使用什么编译器才是重要的,比如:32位系统,tc下的int就是16位长度的,VC就是32位长度的。

    3、long long是标准的8 bytes,不受编译器限制,所以,16位的依然也是8 bytes。(多谢博友0_0i_i 的指正

    通过上面的介绍,应该大致明白整型的定义了吧,所以我们在使用整型变量的时候还是得小心的,尤其需要其所占空间长度的时候,千万不要想当然的认为int32位系统下就是4个字节。尽量使用sizeof取值。

    展开全文
  • c++ 基本数据类型长度

    基本数据类型一般长度

    (注意以下的 long long 实际上指的是 unsigned long long 类型)

    (long long 类型数值范围是-9223372036854775808 ~ 9223372036854775807)差不多范围是1.8*10^20.


    从上面 可以发现 int 类型 和 long 类型 所占用字节数是一样的,

    这是由操作系统决定的,参照下表:

    类型

    16位系统/字节

    32位系统/字节

    64位系统/字节

    char

    1

    1

    1

    char*

    2

    4

    8

    short

    2

    2

    2

    int

    2

    4

    4

    long

    4

    4

    8

    long long

    8

    8

    8


    也可以说,这些因操作系统变化的类型的长度,是由编译器决定的.

    标准规定 long 类型的大小 不小于 int 类型, 也就是说 sizeof(long) >= sizeof(int).

    而 long long 类型 不受限制于编译器.



    c/c++ 中  limits.h 头文件的相关源码如下


    #define MB_LEN_MAX    5             // max. # bytes in multibyte char
    #define SHRT_MIN    (-32768)        // minimum (signed) short value
    #define SHRT_MAX      32767         // maximum (signed) short value
    #define USHRT_MAX     0xffff        // maximum unsigned short value
    #define INT_MIN     (-2147483647 - 1) // minimum (signed) int value
    #define INT_MAX       2147483647    // maximum (signed) int value
    #define UINT_MAX      0xffffffff    // maximum unsigned int value
    #define LONG_MIN    (-2147483647L - 1) // minimum (signed) long value
    #define LONG_MAX      2147483647L   // maximum (signed) long value
    #define ULONG_MAX     0xffffffffUL  // maximum unsigned long value
    #define LLONG_MAX     9223372036854775807i64       // maximum signed long long int value
    #define LLONG_MIN   (-9223372036854775807i64 - 1)  // minimum signed long long int value
    #define ULLONG_MAX    0xffffffffffffffffui64       // maximum unsigned long long int value
    
    
    #define _I8_MIN     (-127i8 - 1)    // minimum signed 8 bit value
    #define _I8_MAX       127i8         // maximum signed 8 bit value
    #define _UI8_MAX      0xffui8       // maximum unsigned 8 bit value
    
    
    #define _I16_MIN    (-32767i16 - 1) // minimum signed 16 bit value
    #define _I16_MAX      32767i16      // maximum signed 16 bit value
    #define _UI16_MAX     0xffffui16    // maximum unsigned 16 bit value
    
    
    #define _I32_MIN    (-2147483647i32 - 1) // minimum signed 32 bit value
    #define _I32_MAX      2147483647i32 // maximum signed 32 bit value
    #define _UI32_MAX     0xffffffffui32 // maximum unsigned 32 bit value
    
    
    // minimum signed 64 bit value
    #define _I64_MIN    (-9223372036854775807i64 - 1)
    // maximum signed 64 bit value
    #define _I64_MAX      9223372036854775807i64
    // maximum unsigned 64 bit value
    #define _UI64_MAX     0xffffffffffffffffui64</span>



    展开全文
  • 关于java语言中的整数型: 数据类型 占用空间大小 默认值 取值范围 byte 1 0 [-128 ~ 127] short 2 0 [-32768 ~ 32767] int 4 0 [-2147483648 ~ 2147483647] long 8 ...

    /*

    关于java语言中的整数型:
    
    	数据类型		占用空间大小		默认值		 取值范围
    

    		byte			1					0			[-128 ~ 127]
    		short			2					0			[-32768 ~ 32767] 
    		int				4					0			[-2147483648 ~ 2147483647]
    		long			8					0L			
    
    1. JAVA语言当中的“整数型字面值”被默认当做int类型类处理,要让这个“整数型字面值”被当做long类型来处理,
      需要在“整数型字面值”后面添加l/L,建议使用大写的L。

    2. JAVA语言当中的整数型字面值有三种表示方式:
      第一种方式:十进制【是一种缺省默认的方式】
      第二种方式:八进制【在编写八进制整数型字面值的时候,需要以0开始】
      第三种方式:十六进制【在编写十六进制整数型字面值的时候,需要以0x开始】

    */

    public class test3
    {
    public static void main(String[] args)
    {
    int a = 10;
    int b = 010; //整数型字面值以0开头的,后面那一串数字就是八进制形式
    int c = 0x10; //整数型字面值以0x开头的,后面那一串数字就是十六进制形式

    	System.out.println(a); //10
    	System.out.println(b); //8
    	System.out.println(c); //16
    
    	System.out.println(a + b + c); //34
    	
    	//123这个整数型字面值是int类型
    	//i变量声明的时候也是int类型
    	//int类型的123赋值给int类型的变量i,不存在类型转换
    
    	int i = 123;
    	System.out.println(i);
    	
    	//456这个整数型字面值是int类型,占用4个字节
    	//x变量在声明的时候是long类型,占用8个字节
    	//int类型的字面值456赋值给long类型的变量x,存在类型转换
    	//int类型转换成long类型
    	//int类型是小容量
    	//long类型是大容量
    	//小容量可以自动转换成大容量,称为“自动类型转换”机制。
    	long x = 456;
    	System.out.println(x);
    	
    	//2147483647字面值是int类型,占用4个字节
    	//y是long类型,占用8个字节,自动类型转换
    	long y = 2147483647;
    	System.out.println(y);
    
    	//编译错误:过大的整数:2147483648
    	//2147483648被当做int类型4个字节处理,但是这个字面值超过int类型范围
    	//long z = 2147483648;
    	//System.out.println(z);
    
    	//解决错误
    	//2147483648字面值一上来就当做long类型来处理,在字面值后面添加L
    	//2147483648L是8个字节的long类型
    	//z是long类型变量,以下程序不存在类型转换
    	long z = 2147483648L;
    	System.out.println(z);
    
    	//100L是long类型字面值
    	//x是long类型变量
    	//不存在类型转换,直接赋值
    	long x1 = 100L;
    	
    	//x变量是long类型,8个字节
    	//y变量是int类型,4个字节
    	//以下程序能编译通过吗?
    	//编译报错:大容量不能直接赋值给小容量
    	//int y = x;
    
    	//大容量转换成小容量,需要进行强制类型转换
    	//强制类型转换需要加“强制类型转换符”
    	//加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度。
    	//所以,强制类型转换谨慎使用,因为损失精度之后可能损失很严重
    	//强转原理:
    		//原始数据:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
    		//强转之后的数据:00000000 00000000 00000000 01100100
    		//将左边的二进制砍掉【所有的数据强转的时候都是这样完成的】
    	
    	int y1 = (int) x1;
    	System.out.println(y1);
    
    	//原始数据:00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000
    	//以上数据计算方法是:int类型最大值2147483647,为 01111111 11111111 11111111 11111111
    	//那么,2147483648L就是2147483647加上1,得出10000000 00000000 00000000 00000000
    	//强转之后的数据:10000000 00000000 00000000 00000000
    	//10000000 00000000 00000000 00000000目前存储在计算机内容,计算机存储数据都是采用补码的形式存储
    	//所以10000000 00000000 00000000 00000000现在是一个补码形式
    	//将以上的补码转换到原码就是最终的结果
    
    	long k = 2147483648L;
    	int e = (int)k;
    	System.out.println(e); //损失精度严重,结果是负数【-2147483648】
    
    
    	//分析以下程序是否可以编译通过?
    	//依据目前所学内容,以下程序时无法编译通过的
    	//理由:50是int类型的字面值,b是byte类型的变量,显然是大容量int转换成小容量byte
    	//大容量转成小容量是需要添加强制类型转换符的,以下程序没有添加强转符号,所有编译错误。
    	//但是,在实际编译的时候,以下代码编译通过了,这说明:在java语言当中,当一个整数型字面值
    	//没有超过byte类型取值范围的话,该字面值可以直接赋值给byte类型的变量。
    	byte b1 = 50; //可以
    	
    	byte c1 =127; //可以
    
    	//编译报错,128这个int类型的字面值已经超过了byte类型的取值范围,不能直接赋值给byte类型的变量。
    	//byte c2 =128;
    	//纠正错误,需要使用强制类型转换符
    	//但是一定会损失精度
    	//原始数据:00000000 00000000 00000000 10000000
    	//强转之后:10000000【这是存储在计算机内部的,这是一个补码,它的原码是什么?】
    
    	byte c2 =(byte)128; //-128
    	System.out.println(c2);
    
    	/*
    		计算机二进制有三种表示形式:
    			原码
    			反码
    			补码
    		计算机在任何情况下底层表示和存储数据的时候采用了补码形式。
    		正数的补码:和原码相同。
    		负数的补码:负数的绝对值对应的二进制码所有二进制位取反,再加1
    
    	补码:10000000
    	原码计算过程:
    		1. 补码:10000000 - 1 --> 01111111
    		2. 反码:10000000 -->128
    		3. 原码:-128
    
    	*/
    
    	byte m = (byte)198;
    	System.out.println(m);
    
    	//198的int二进制:00000000 00000000 00000000 11000110
    	//强制类型转换之后:11000110
    	//11000110现在在计算机当中存储,它是一个补码,将补码转换成原码就是该数字:
    	//强制类型转换之后:11000110 - 1 --> 强制类型转换之后:11000101
    	//取反:00111010 【2+8+16+32】-->58
    	// -58
    
    	short s = 32767; //通过
    	System.out.println(s+"------------------------");
    	//short s1 = 32768; //编译报错
    	
    	//65535是int类型,4个字节
    	//cc是char类型,2个字节
    	//按照以前所学知识点来说,以下程序时编译报错的。
    	//char cc = 65535; //通过
    	//cc = a65536; //编译报错
    	
    	char cc = 65535;
    	System.out.println(cc);
    
    	//char cc1= 65536;
    	//System.out.println(cc1);
    
    	//当一个整数字面值没有超过byte, short的取值范围,这个字面值可以直接赋值给
    	//byte, short类型的变量,这种机制SUN公司允许了,目的是方便程序员进行编程。
    
    
    }
    

    }

    展开全文
  • short、intlong、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 在不同的系统上,这些类型占据的字节长度是不同的: 在32 位的系统上 short 占据的内存大小是2 个byte; int占据的内存...

     C 语言包含的数据类型

     

    short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。

    在不同的系统上,这些类型占据的字节长度是不同的:

    在32 位的系统上

    short 占据的内存大小是2 个byte;
    int占据的内存大小是4 个byte;
    long占据的内存大小是4 个byte;
    float占据的内存大小是4 个byte;
    double占据的内存大小是8 个byte;
    char占据的内存大小是1 个byte。

    具体可以用sizeof测试一下即可。

     

    首先要明白网络速度的基本单位是以字节b为单位,千字节Kb 
    而单位 大写 B(Byte) =8b(byte) 所以 1KB=8Kb 之间是1024进位 同理 得出 1024KB=1MB 1024M=1GB 
    如果网通提供的宽带是 1M 那么实际的下载速度就等于1024KB/8=128Kb 这个数据是理论上的下载速度,实际速度并没有那么快

     

     

    二 变量的命名规则
    1、命名应当直观且可以拼读,可望文知意,便于记忆和阅读。
    标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。

    2、命名的长度应当符合“min-length && max-information”原则。
    C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长,较长的单词可通过去掉“元音”形成缩写。

    另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思。

    3、当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如:
       int CurrentVal;
    这样的名字看起来比较清晰,远比一长串字符好得多。

    4、尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。比如驱动开发时为管脚命名,非编号名字反而不好。
    初学者总是喜欢用带编号的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。

    5、对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符),如 GUI_ ,etc

     

    标识符的命名规则

    6、标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。非全局变量可以不用使用范围限定符前缀。

    7、作用域前缀命名规则。

    8、数据类型前缀命名规则。

    9、含义标识命名规则,变量命名使用名词性词组,函数命名使用动词性词组。例如:

    变量含义标识符构成:目标词+ 动词(的过去分词)+ [状语] + [目的地];

    函数含义标识符构成:动词(一般现时)+目标词+[状语]+[目的地];

    10、程序中不得出现仅靠大小写区分的相似的标识符。例如:
       int x, X; 变量x 与X 容易混淆
       void foo(int x); 函数foo 与FOO 容易混淆
       void FOO(float x);
    这里还有一个要特别注意的就是1(数字1)和l(小写字母l)之间,0(数字0)和o(小写字母o)之间的区别。这两对真是很难区分的,我曾经的一个同事就被这个问题折腾了一次。

    11、一个函数名禁止被用于其它之处。例如:
    #include "c_standards.h"
    void foo(int p_1)
    {
       int x = p_1;
    }
    void static_p(void)
    {
       int foo = 1u;
    }

    12、所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。例如:
    const int MAX_LENGTH = 100; //这不是常量,而是一个只读变量,具体请往后看
       #define FILE_PATH “/usr/tmp”

    13、考虑到习惯性问题,局部变量中可采用通用的命名方式,仅限于n、i、j 等作为循环变量使用。
    一定不要写出如下这样的代码:
       int p;
       char i;
       int c;
       char * a;
    一般来说习惯上用n,m,i,j,k 等表示int 类型的变量;c,ch 等表示字符类型变量;a 等表示数组;p 等表示指针。当然这仅仅是一般习惯,除了i,j,k 等可以用来表示循环变量外,别的字符变量名尽量不要使用。

    14、定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。这个问题在内存管理会有非常详细的讨论。

    15、不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

     

     

    参考文档:http://c.biancheng.net/cpp/html/437.html

     

    展开全文
  • int和long的区别

    千次阅读 2014-05-27 23:30:25
    突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》: ...
  • 整数用于编写类型int、uint、long和ulong的值。整数具有两种可能的形式:十进制十六进制。integer-literal:(整数:)decimal-integer-literal(十进制整数)hexadecimal-integer-literal(十六进制整数)decimal-...
  • long int 的区别

    2017-04-06 16:16:00
    long和int到底什么区别,下面的话选自《C程序设计语言》: short与long两个限定符的引入可以为...各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为3
  • 求下面数据类型的最大值最小值: char, short, int, long, float, double, long doublenumeric_limits使用
  • long long,long,int

    千次阅读 2015-03-07 11:25:25
    突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》: short...
  • 经常被这种小问题困扰,所以这次索性就把网上找的资料共享了 ...数据类型名称 字节数 别名 取值范围 int * signed,signed int 由操作系统决定,即与操作系统的"字长"有关
  • 突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》: ...
  • 实现将String类型转换成int类型输出

    千次阅读 2017-03-31 15:07:13
    题目:编写一个函数将String 类型的数据转换成int类型的数据。分析: (1)考虑输入的合法性 (2)考虑正负 (3)考虑溢出 (4)考虑返回值 代码:/** * 题目:编写一个函数将String 类型的数据转换成int类型...
  • long和int的区别

    千次阅读 2017-07-25 08:51:17
    各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制: short 与 int 类型至少为 16 位, long 类型至少为 32 位,并且 short 类型不得长于 int 类型,而 int 类型不得长于 long 类型。 下面一...
  • Turbo C有以 下几种类型: 整型(int)、浮点型(float)、字符型(char)、指针型(*)、无值型 (void)以及结构(struct)联合(union)。其中前五种是Turbo C的基本数据类型、 后两种数据类型(结构联合)将在第五章介绍。 ...
  • unsigned char,short,int ,long在16位32位64位机器的长度   转载▼ 最近经常见到这些unsigned char,short,intlong的定义,有时真的不确定位长是多少,上网查,又话是跟编译器有关,没一个准确...
  • Java, Long类型值比较

    千次阅读 2018-10-24 16:01:16
     Java中, Long类型long的包装类。 在进行 Long类型的对象比较中,需要弄清楚... 若要对本文的Demo有一个更好的理解,可以先观看博客: 【java】Long.valueOf()和longValue()区别     以下是2个小Demo...
  • VC++中的CString、char、int类型转换

    万次阅读 2011-07-29 09:53:14
    1、如何将CString类型的变量赋给char*类型的变量方法一:GetBuffer函数使用CString::GetBuffer函数。char *p; CString str="hello"; p=str.GetBuffer(str.GetLength()); str.Relea
  • c++类型所占的字节表示范围

    千次阅读 2014-11-20 11:55:06
    (1)short、int long 类型都表示整型值,存储空间的大小不同 一般, short 类型为半个机器字长,int 类型为一个机器字长,而 long 类型为一个或两个机 器字长(在 32 位机器中 int 类型和 long 类型通常字长是...
  • java基础之Integer和Long

    2019-07-25 11:26:50
    Integer和Long都继承自Number类,该类的方法均为类型转换,如intValue() 均为有符号整数,大小分别为-2^31~2^31-1-2^63~2^63-1 Integer和Long都可以转为多种进制的字符串,静态方法toString(int,radix) 多种...
  • c++ 中关于int,unsigned int , short的关系与应用

    千次阅读 多人点赞 2014-09-02 17:15:52
    int类型比较特殊,具体的字节数同机器字长编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧 __int16、__int32这种数据类型在所有平台下都分配相同的字节。所以在移植上不存在问题。 所谓的不可...
  • 第2章-变量基本类型 ...——它们的存储空间大小不同,一般,short类型为半个机器字长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的。)
  • (1)int 类型与操作系统,编译器相关 如:win32下为32位,win64下为64位 如果软件有移植需求,请使用固定大小的数据类型 (2)long 的字节数是不随平台改变的,都是4字节 补充: BYTE 1字节 typedef unsigne.....
  • 专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 ... ————————————————————————————————————————————————————...类型 intlonglong long short...
  • java 数据类型所占字节数,int char

    千次阅读 2016-06-11 09:36:13
    * byte和int,char类型区别如下: 1.byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。 2.char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;
  • MySQL支持大量的列类型,它可以被分为3类:数字类型、日期时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意...
  • C# 基元类型 引用类型和类型

    千次阅读 2016-08-11 17:05:43
    基元类型 引用类型类型
  • 关于getopt_long()

    千次阅读 2016-01-13 09:50:16
    int getopt_long(int argc, char * const argv[],const char *optstring, const struct option *longopts,int *longindex); 函数中的argcargv通常直接从main()的两个参数传递而来。optsting是选项参数组成的字符...
  • 1.头文件中要定义宏;  #define UNICODE  #define _UNICODE   2.char转换成wchar  const char *pFilePathName = "c:\\aa.dll";  int nLen = strlen(pFilePathName) + 1;
  • C++语言规定一个int至少一个short一样大,一个long至少一个int一样大,一个long long至少一个long一样大。每个的最小尺寸分别为:short,16位;int,16位;long,32位;long long,64位。 除去布尔型扩展的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,059
精华内容 27,623
关键字:

下列关于int类型和long类型