C-数据类型,变量,常量

数据类型
基本数据类型:
具体大小可能会有不同,由sizeof函数确定。

基本数据类型
    32位 64位
char 字符型 1byte 1byte
short 短整型 2byte 2byte
int 整型 4byte 4byte
long 长整型 4byte 8byte
float 单精度浮点型 4byte 4byte
double 双精度浮点型 8byte 8byte

ps:

1byte(字节) = 8bit(位)

位:计算机中最小的数据单位,0或者1。

字节:储存空间的基本计量单位,一个ASCII码就是一个字节。


类型限定符unsigned(无符号)和signed(有符号)可用于限定char类型或任何整形。

unsigned类型的数总是正值或0,signed类型从负值到正值。

如:unsigned char的取值范围为0~255,signed char的取值范围为-128~127。

整型默认有符号。

char类型是否带符号取决于具体机器,但是打印字符总是正值。

ANSI C标准规定:各种类型的取值范围必须在头文件<limits.h>中定义,在不同的硬件上会有不同的长度。

利用标准头文件来确定各类型有符号和无符号的取值范围:

#include <stdio.h>
#include <limits.h>

main(){
        printf("signed char %d~%d\n", SCHAR_MIN, SCHAR_MAX);
        printf("signed short %d~%d\n", SHRT_MIN, SHRT_MAX);
        printf("signed int %d~%d\n", INT_MIN, INT_MAX);
        printf("signed long %d~%d\n", LONG_MIN, LONG_MAX);
        printf("unsigned char 0~%u\n", UCHAR_MAX);
        printf("unsigned short 0~%u\n", USHRT_MAX);
        printf("unsigned int 0~%u\n", UINT_MAX);
        printf("unsigned long 0~%lu\n", ULONG_MAX);

        return 0;
}

结果

signed char -128~127
signed short -32768~32767
signed int -2147483648~2147483647
signed long 0~-1
unsigned char 0~255
unsigned short 0~65535
unsigned int 0~4294967295
unsigned long 0~18446744073709551615



八进制和十六进制

八进制以0为前缀。

十六进制以0x或0X为前缀。


其他类型:
数组,结构,联合,指针,函数



变量

变量实际上是程序可操作的储存区的名称,

每个变量都有特定的类型,类型决定了变量存储的大小和布局。

变量必须先声明后使用。(可以在声明的同时对变量进行初始化)

声明用于说明变量的属性,它由一个类型名和一个变量表组成。

变量表由1个及以上个变量名组成,彼此用,(逗号)分隔。

变量名是由字母,数字及下划线组成的序列。并必须以字母开头。

关键字不可做变量名。如:if,else,int,float等。

ps:

局部变量一般使用较短的变量名(尤其是循环控制变量),外部变量使用较长的名字。


常量

常量是固定值,在程序执行期间不会改变。在编译时就将值进行相应替换,值已经确定。

#define(宏定义)

用#define可以将符号常量(常量名)定义为一个特定的字符串。

#define 常量名 替换文本

在该定义之后,程序中出现的所有在#define中定义的常量名(既没有用引号引起,也不是其他名字的一部分)都将用相应的替换文本替换。

常量名与普通变量名形式相同:以字母开头的字母,数字,下划线序列,通常用大写字母拼写,与变量名相区分。

替换文本可以是任何字符序列。


类型:
后缀仅起标识作用。本质是字符序列的替换。

整数常量
int型常量 纯数字序列
long型常量 以l或L结尾的数字序列
unsigned型常量 以u或U结尾的数字序列

ps:如果一个整数太大以至于无法用int类型表示,也被当作long类型处理。

浮点数常量
double型常量 包含一个小数点,或一个指数(e)的数字序列
float 包含一个小数点,或一个指数(e),并以f或F结尾的数字序列

字符常量:

将一个字符括在单引号中。

字符串常量:

将一组字符序列括在双引号中。


const声明

任何变量的声明都可以用const限定符限定。

const限定符指定变量的值不能被修改。若修改,编译器会报错。是一种显式的提醒。

相当于将变量通过const限定为常量。

并且,除基本数据类型外,还可以限定数组,指针等数据类型。保证被限定的数据类型的值不会被修改。

enum(枚举)

enum定义了一个新的类型,类型的取值是{ }内列举的整型常量值的一个,枚举值之间用,(逗号)分隔开。

声明枚举类型:

enum month { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};

对枚举型变量赋值:
enum month nowmonth = MAR;

没有显式说明的情况下,第一个枚举名的值为0,之后的枚举名递增+1。

若指定了枚举名的值,则之后的未指定值的枚举名的值递增+1。

#include <stdio.h>

main(){
        enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };
        enum months nowmonth = MAR;
        printf("%d\n",nowmonth);
        return 0;
}

同一程序中不能出现同名的枚举类型和枚举成员。

同一枚举中不同的名字可以具有相同的值。


猜你喜欢

转载自blog.csdn.net/qq_31730735/article/details/80599458