关于c语言c语言中长整型常量量的范围问题

323 条评论分享收藏感谢收起赞同 7添加评论分享收藏感谢收起在C语言中,整型常量与整型变量的区别是什么?举例_百度知道
在C语言中,整型常量与整型变量的区别是什么?举例
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
整型常量:C语言程序中整型常量分为十进制整型常量、八进制整型常量、十六进制整型常量3种表现形式。1、十进制整型常量由一连串的0~9数字组成。2、八进制整型常量以数字0开头,其中的数字为0~7。3、十六进制整型常量以数字0x或0X为开头,其中的数字可以是0~9、a~f或A~F中的数字或英文字母。整型变量:整型变量是用于存放整型值的变量。分类根据在内存中所占字节数可以分为:短整型 【signed】short 【int】基本整型 【signed】 int长整型 【signed】long 【int】无符号短整型 unsigned short 【int】无符号基本整型 unsigned 【int】无符号长整形 unsigned long 【int】在定义变量的同时可以给变量赋初值,称为变量的初始化。
百度知道合伙人官方认证企业
主营:培训【Python+人工智能,Java大数据,HTML5】
整型常量的值不可被改变,而整型变量的值可以更改,这是最主要的区别实际上,整型常量通常被定义为某个特殊的量,用以参与运算,而整型变量仅仅只是当做变量来用
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&&& 在程序运行中,其值不能改变的量成为常量。
&&& 在基本数据类型中,常量可分为整型常量、实型常量、符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下:
&&& 一、常量
&&& 二、C语言标识符
&&& 三、变量
& &&四、变量命名规则
&&& 附录:ASCII码表
&&& 1.整型常量
&&&&&& &即整常数,由一个或多个数字组成,可以带正负号
&&&&& & C语言中整型常量可用十进制、八进制和十六进制3种形式表示
&&&&& &&&&& 十进制整数:由0~9数字组成,不能以0开始,没有前缀
&&&&& &&&&& 八进制整数:以0为前缀,其后由0~7的数字组成,没有小数部分
&&&&&& &&&&&十六进制整数:以0x或0X开头,其后由0~9的数字和a~f(或A~F字母组成)
&&&&& & 另外长整型常量后加后缀L(或1),无符号常量后加后缀U(或u)
&&& 2.实型常量
&&&&&&& C语言中,实数又称浮点数一般有两种表示形式
&&&&&&&&&&& 十进制小数形式:由数字和小数点组成,必须有小数点(例如 .24 也合法)
&&&&&&&&&& &指数形式:有十进制数、阶码标志&e&或&E&和阶码组成,阶码只能是整数。e和E前面必须有数字,后面必须是整数
&&&&&&& 实型常量的类型:C编译系统对实型常量不分float和double,都作double处理以更精确,也可以在实型常量后面加上字母f或F来指定其为单精度实型(float)
&&& 3.符号常量
&&&&&&& C语言中,可以用一个标识符表示一个常量,称之为符号常量,即标识形式的常量
&&&&& & 符号常量是一种特殊的常量,其值和类型是通过符号常量的定义决定的
&&&&& & 符号常量在使用之前必须定义,一般形式如下:
&&&&& &&&&& #define 标识符常量
&&&&& &&&& &(#define是一条预处理命令,其功能是把命令格式中的标识符定义为其后的常量值)
&&&&&& &习惯上,为了与程序中的变量名区别,符号常量名一般用大写字母表示
&&& 4.字符型常量
&&&&&&& 包括字符常量和字符串常量
&&&&&&& (1)字符常量:
&&&&&&&& && 又称字符常数,C语言中的字符常量是用单引号括起来的字符,区分大小写
&&&&&&&& && 字符常量有以下特点:
&&&&&&&&&&&&&&& ①字符常量只能用单引号括起来
&&&&&&&&&&&&&&&&&& &单引号只起界定作用,不表示字符本身
&&&&&&&&&&&&&&&&&&& 单引号中只能由一个字符,字符可以是字符集中的任意字符
&&&&&&&&&&&&&&&&&&& 单引号中的字符不能是单引号(')和反斜线(\)
&&&&&&&&&&&&&&& ②每个字符常量都有一个整数值,就是该数的ASCII码(见附录)
&&&&&&&&&&&&&&& ③字符常量区分大小写
&&&&&&&&&&& 对于一些常用但却难以用一般形式表示的不可显示字符,C语言提供了一种特殊形式的字符常量,即用一个转义标识符&\&(反斜线)开头的字符序列,如表(转义字符及其含义):
&&&&&&&&&&&
&&&&&&& (2)字符串常量:
&&&&&&&&&&& 字符串常量是用一对双引号括起来的字符串序列
&&&&&&&&&&& C语言规定字符串常量的存储方式为:
&&&&&&&&&&&& && 字符串中的每个字符以其ASCII码值得二进制形式存放在内存中,并且系统自动在该字符串末尾加一个&字符串结束标志&
&&&&&&&&&&&& &&&&&& ('\0',即ASCII码值为0的字符,它不引起人和控制动作,也不是可显示的字符)
&&&&&&&&&&&& && 以便系统判断字符串是否结束。例:字符串"a",实际长度为2,包含'a'和'\0'
二、C语言标识符
&&& 用来标识变量名、符号常量名、函数名、类型名和文件名等的有效字符序列称为标识符
&&& 1.标识符由字母(A-Z,a-z)、数字(0-9)、下划线&_&组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to
&&& 2.不能把C语言关键字作为用户标识符,例如if ,for, while等
&&& 3.标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)
&&& 4.标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写
&&& 5.标识符命名应做到&见名知意&,例如,长度(外语:length),求和、总计(外语:sum),圆周率(外语:pi)&&
&&& 6.C语言中把标识符分为三类:关键字,预定义标识符,用户自定义标识符
&&& 变量只是在程序中可以改变的量,一旦被定义,就具备了3个基本要素:变量名、变量类型和变量值
&&& 1.变量名:
&&&&&&& 变量的命名规则:
&&& 2.变量类型:
&&&&&&& C语言中变量遵循&先定义后使用&的原则,变量定义的形式一般为:
&&&&&&& &&& 变量类型&&& 变量表名
&&&&&&& 其中变量类型即为变量中所存储的数据类型,数据类型概念详见之前博客
&&&&&&& (1)整型变量
&&&&&&&&&&& ①整型数据在内存中的存放。在C语言中,可以使用十进制,八进制和十六进制数据,但在内存中都以二进制存
&&&&&&&&&&& ②整型变量的基本类型说明符为int。根据占用内存字节数不同可以将整型变量分为如下几类:
&&&&&&&&&&&&&&& 基本整型:int,在16位系统中占2字节,32位系统中占4字节
&&&&&&&&&&&&&&& 短整型:short int或short,在大多数计算机系统中占2字节
&&&&&&&&&&&&&&& 长整型:long int或long,一般占4字节
&&&&&&&&&&&&整型变量的类型:
&&&&&&&&&&&&&&&&有符号短整型:short [int]&&& 2byte&&& -
&&&&&&&&&&&& &&&无符号短整型:unsigned&short&[int]&&& 2&byte&0~65535
&&&&&&&&&&&&&& &有符号整型:int&/signed&[int]&&& 4&byte&&& -~
&&&&&&&&&&&& &&&无符号整型:unsigned&[int]&&& 4&byte&& &0~
&&&&&&&&&& &&&&&有符号长整型:long&[int]/signed&long&[int]&&& 4&byte&&& -~&
&&&&&&&&& &&&&&&有符号长整型:unsigned&long&[int]&&& 4&byte&& &0~
&&&&&&&&&&& ③整型数据的溢出。在C语言中,如果一个变量的值超过了其类型所允许的最大值,则会出现溢出现象
&&&&&&&&&&&&&&& 具体数据溢出测试详见之前博客
&&&&&&& (2)实型变量
&&&&&&&&&&& ①实型数据在内存中的存放。实型数据在内存中占4字节,按照指数形式存储,存放形式如下:
&&&&&&&&&&&&&&& 符号位+小数部分+指数部分
&&&&&&&&&&&&&&& 注意:所有实型数据均为有符号实型数,没有无符号实型数
&&&&&&&&&&&&&&& 至于在内存中究竟分别用多少位表示小数部分和指数部分,ANSI C并无具体规定,由各C编译系统决定
&&&&&&&&&&& ②C语言提供的常用实型变量类型有单精度型(float)和双精度型(double),有时也用长双精度型(long double)
&&&&&&&&&&&&&&& 实型变量类型:
&&&&&&&&&&&&&& &&&& 单精度型:float&&& 4&byte&&&&-3.4e38~3.4e38&&& 6~7位有效位
&&&&&&&&&&&&&&& &&&&双精度型:double&&& 8&byte&& &-1.7e308~1.7e308&&& 15~16位有效位
&&&&&&&&&&&&&&&& && 长双精度型:long double&&& 16&byte&& &-3.4ee4932&&& 18~19位有效位
&&&&&&&&&&& ③实型数据的舍入误差。有限的存储单元能提供的有效数字是有限的,因此会存在实型数据的计算舍入误差
&&&&&&& 字符变量
&&&&&&&&& & 字符变量是用来存储字符常量的,每个字符占用一个字节的存储空间,类型名为char
&&&&&&&& && 字符变量的类型:
&&&&&&&&&&&&&&& 有符号字符型char/signed&char&& &1&byte&& &-128~127
&&&&&&&&&&&&&&& 无符号字符型unsigned&char&&& 1&byte&&& 0~255
&&& 3.变量值:
&&&&&&& 在 程序中,一个变量必须先由确定的值后才能参与各种相应的操作
&&&&&&& 变量可以通过赋值语句或输入语句获得一个值,也可以用初始化的方法获得一个值
四、变量命名规则
内容摘抄自&
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 等作为循环变量使用。一定不要写出如下这样的代码:& && && && &char *一般来说习惯上用n,m,i,j,k 等表示int 类型的变量;c,ch 等表示字符类型变量;a 等表示数组;p 等表示指针。当然这仅仅是一般习惯,除了i,j,k 等可以用来表示循环变量外,别的字符变量名尽量不要使用。14)定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。这个问题在内存管理那章有非常详细的讨论,请参看。15)不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。
附录:ASCII码表
&&&&截图自&
阅读(...) 评论()134 条评论分享收藏感谢收起《C语言程序设计:问题与求解方法》——3.7节各种类型的常量
《C语言程序设计:问题与求解方法》——3.7节各种类型的常量
本节书摘来自华章社区《C语言程序设计:问题与求解方法》一书中的第3章,第3.7节各种类型的常量,作者:何 勤,更多章节内容可以访问云栖社区“华章社区”公众号查看
3.7 各种类型的常量与变量类似,常量实际上也有多种细分的类型。
本节书摘来自华章社区《C语言程序设计:问题与求解方法》一书中的第3章,第3.7节各种类型的常量,作者:何 勤,更多章节内容可以访问云栖社区“华章社区”公众号查看
3.7 各种类型的常量与变量类似,常量实际上也有多种细分的类型。在C语言中变量需要先定义类型才能在语句中使用,而常量有默认的类型。数值末尾不添加类型说明符的整型常量默认为是int型的。超出int型范围的整型常量,默认为是long型的。也就是说,整型常量1234一定是int类型的,而整型常量123467(超过了32767)在int型最大值是32767的系统中是long型的。数值末尾不添加类型说明符的浮点型常量默认为是double型的。也就是说,任意一个浮点型常量,不论是小数形式表示的,还是指数形式表示的,只要数的末尾没有加类型说明符F(或者f),一律被编译程序当成是double型的常量。如果默认的类型不合适,可以在常量的末尾加上类型说明符。对于整型常量,可在末尾加U表示无符号整型或加L表示长整型;在整型常量的开头,还可加上进制说明符,以0开头表示八进制整数,0x或0X开头表示十六进制整数。对浮点型常量,在末尾可加F(或f),表示该常量是单精度浮点型。 (1)数值常量的存储类型(初学时不必看)与基本类型变量一样,常量也分为三大类型:字符型、整型和浮点型。除了字符型常量比较简单外,常量根据在内存中存储方式(参见本章提高部分)的不同,可细分为很多类型。所有常量的(不同存储)类型请参见表3-2:表3-2 各种常量类型
说明:说明常量类型的字符U、L、F都可以用小写字符u、l、f,多个类型符号连在一起书写时,符号之间的顺序是任意的。比如,123UL、 123LU、123ul都是一样的。总之,数值末尾不添加类型说明符的整型常量(比如123)默认是int型的,但是该数的值如果超出了int型的范围,那么该数默认是long型的;不添加类型说明符的实型常量(比如123.34)一定是double型的。其他强制指定的常量类型一般很少使用。强制指定常量类型常常是为了减少程序运行时的类型转换。比如在变量定义时,使用“float
x = 123.3F;”就比使用“float
123.3 ;”要好,前者避免了一次不必要的运行时的类型转换。(2)数值常量的多种机外书写形式(初学时不必看)上表中对常量的分类,是一种本质上的分类,因为上表中各种不同的常量在内存中的存储方式不同(参见本章提高部分)。但是,常量还可以根据在源程序中的书写(或输入输出中的)形式来进行分类。上一章已经讲过,浮点型常量有两种书写形式:十进制小数形式和十进制指数形式。如,小数形式123.45和指数形式1.2345e2,在内存中其实是具有完全相同存储形式的浮点数(默认为double型的)。它们仅仅是在程序中(或输入输出时)的表现形式不同而已。再加上不同的存储形式(double型与float型),数值大小相同(取值不超过float型范围)的浮点型常量一共有4种机外表示形式:123.45、1.3.45f、1.2345e2f。整型常量在C语言源程序中(或程序运行的输入输出时),除了可以用十进制形式书写(或输入输出)之外,还可以使用八进制和十六进制形式来书写(或输入输出)。八进制整型常量:常量中只包含数字0~7,用0开头表示的数都是八进制整型常量。比如,034、065、–013。十六进制整型常量:常量中包含数字0~9和字符a~f(或者用A~F),以0x(或0X)开头的,都是十六进制整型常量。比如,0x3d、 0XEF、–0x8a等。同一个十进制整数123(默认为int型),还可以用八进制整数0173来表示,或者用十六进制整数0x7B来表示。它们也仅仅是在程序中(或输入输出时)的表现形式不同而已,在计算机内部,它们是形式完全相同的二进制整数1011(假设int型占2个字节)。再加上不同的存储形式(int、long、unsigned、unsigned long),数值大小相同且值不超过int范围的整型常量一共有3×4=12种机外表示形式:123、123L、123U、123UL、L、0173U、0173UL、0x7B、0x7BL、0x7BU、0x7BUL。八进制和十六进制整数主要应用在系统编程和嵌入式编程方面(主要原因在于:机外形式的八进制和十六进制整数与机内形式的二进制整数之间很容易进行相互转换)。如果一个二进制整数中的n个位分别用来表示n个开关的状态,在用C语言编程时,那么就最好使用无符号的八进制整数(或无符号十六进制的整数)来表示此二进制整数,C语言的源程序中无法直接使用二进制整数。
用云栖社区APP,舒服~
【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?&&
文章10182篇
提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性...
是阿里云为云服务器ECS提供的低时延、持久性、高可靠的数据块级随机存储。
构建在阿里云飞天分布式系统之上的NoSQL数据存储服务,提供海量结构化数据的存储和实时访问。
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...

我要回帖

更多关于 c语言合法整型常量 的文章

 

随机推荐