第二章 C数据类型
八进制整数由数字0开头,后跟0~7的数字序列组成。
十六进制整数由数字0加字母x(或X)开头,后跟0~9,a~f(或A~F)的数字序列组成。
整型常量:
- 默认的int型定义为有符号整数,因此对int型无需使用signed
- 无符号整型常量:U
- 长整型常量:L
- 无符号长整型常量:LU
十进制小数形式
指数形式:3.45e-6=0.00000345
实型常量:
- 单精度:F
- 双精度(实型常量默认)
- 长双精度:L
变量在使用前必须先定义,需要声明变量的类型和变量名。
//L2-1a-1
main()//以main()作为开头指定了C程序执行的起点
//一个C程序必须有且只能有一个用main()作为名称的函数,称为主函数
{
int a;
float b;
char c;
a = 1;
b = 2.5;
c = 'A';
}
- 变量名(标识符)是大小写敏感的
- 所有变量必须在第一条可执行语句之前定义(这是C89的要求)
- C99的新特性允许语句和声明按任意顺序排列,只要每个标识符都遵循先声明后使用的原则就行
- 空格是为了增强程序的可读性
- 定义变量的同时可以对变量进行初始化,如int a=1;
//L2-1a-2
main()
{
int a = 1; /* 定义整型变量a并对其初始化 */
float b = 2.5; /* 定义实型变量b并对其初始化 */
char c = 'A'; /* 定义字符型变量c并对其初始化 */
}
可同时定义多个相同的变量,如int a,b,c;
注释不可以嵌套!
//L2-1b
#include <stdio.h>//这是C的编译预处理命令
//这一行将会出现在每一个需要向屏幕输出数据或者从键盘输入数据的程序中
main()
{
int a = 1;
float b = 2.5;
char c = 'A';
//
表示输出一个换行
printf("a = %d
", a); /* 按整型格式输出变量a的值 */
printf("b = %f
", b); /* 按实型格式输出变量b的值,除非特别指定,否则隐含输出6位小数 */
printf("c = %c
", c); /* 按字符型格式输出变量c的值 */
printf("End of program
"); /* 输出一行字符串 */
}
//运行结果
a=1
b=2.500000
c=A
End of program
变量或数据类型所占空间的大小:
- 1B(字节)=8bit
- sizeof()是C语言的关键字,不是函数名
- sizeof()是C语言提供的专门用于计算指定数据类型字节数的运算符
//L2-2
#include <stdio.h>
main()
{
printf("Data type Number of bytes
");
printf("------------ ---------------------
");
printf("char %d
", sizeof(char));
printf("int %d
", sizeof(int));
printf("short int %d
", sizeof(short));
printf("long int %d
", sizeof(long));
printf("float %d
", sizeof(float));
printf("double %d
", sizeof(double));
}
//运行结果
Data type Number of bytes
------------ ---------------------
char 1
int 4
short int 2
long int 4
float 4
double 8
赋值表达式用于给变量赋值
- 有方向性
- 等号左侧是能表示一个特定存储单元的变量名
运算的优先级
- 综合性:左结合、右结合
- C语言中需要两个操作数的算数运算符是左结合的
- 赋值运算符是右结合的
有符号整数和无符号整数
- 对有相同字数的整型数而言,有符号整数能表示的最大整数的绝对值只有无符号整数的一半
- 负数在计算机中都是以二进制补码的形式来表示和存储的
- 正数的反码、补码与其原码都是相同的
- 采用补码可以将减法运算也转换为加法运算来处理
- 采用补码可以以统一的形式来表示+0和-0
实数的指数部分称为阶码,小数部分称为尾数
- 阶码所占的位数决定实数的表数范围,尾数所占的位数决定实数的精度
- 尾数的符号决定实数的正负
浮点数并非真正意义上的实数,只是其在某种范围内的近似
//L2-3
#include <stdio.h>
main()
{
float a;
double b;
a = 123456.789e4;
b = 123456.789e4;
printf("%f
%f
",a,b);
}
//运行结果 1234567936.000000 1234567890.000000