⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据类型、运算符、表达式.01

📁 经典C教程,带所有ANSI C的库函数说明及例子
💻 01
📖 第 1 页 / 共 2 页
字号:
    实型变量说明的格式和书写规则与整型相同。例如:
    float x,y; (x,y为单精度实型量)
    double a,b,c; 
(a,b,c为双精度实型量)实型常数不分单、双精度,都按双精度double型处理。
]void main(){
  float a;
  double b;
  a=33333.33333;
  b=33333.33333333333333;
  printf("%f\n%f\n",a,b);
 }
    此程序说明float、double的不同
    a            ■■■■
    b    ■■■■■■■■
    a<---33333.33333
    b<---33333.33333333333;;
    显示程序结果
    此程序说明float、double的不同
    float a;
    double b;
    a=33333.33333;
    b=33333.33333333333333;
    从本例可以看出,由于a 是单精度浮点型,有效位数只有七位。
而整数已占五位,故小数二位后之后均为无效数字。b 是双精度型,
有效位为十六位。但Turbo C 规定小数后最多保留六位,其余部分四
舍五入。[Practice]         //floatint a=32;
float b;
double d;
b=12345678;
d=b*100;
d=d+a;
d=d+58.123456;'Vtable
a,2,32
b,4,0.0
d,8,0.0
 of Vtable
'Vupdate
1,32
2,0
3,0
2,12345678.00000
3,1234567800
3,1234567832
3,1234567890.123456
 of Vupdate
 of Practice
[Practice]         //1int a=543;
float b;
b=123.123962+a;
b=b-100;
a=b;'Vtable
a,2,543
b,4,0.0
 of Vtable
'Vupdate
1,543
2,0.0
2,123.123962
2,23.123962
1,23
 of Vupdate
 of Practice
字符型量
字符型量包括字符常量和字符变量。

字符常量
    字符常量是用单引号括起来的一个字符。例如'a','b','=','+',
'?'都是合法字符常量。在C语言中,字符常量有以下特点:    
    1.字符常量只能用单引号括起来,不能用双引号或其它括号。
    2.字符常量只能是单个字符,不能是字符串。
    3.字符可以是字符集中任意字符。但数字被定义为字符型之后就
      不能参与数值运算。如'5'和5 是不同的。'5'是字符常量,不
      能参与运算。
转义字符
    转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,
后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的
意义,故称“转义”字符。例如,在前面各例题printf函数的格式串
中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字
符主要用来表示那些用一般字符不便于表示的控制代码。
    常用的转义字符及其含义    
     转义字符         转义字符的意义
	\n              回车换行
	\t              横向跳到下一制表位置
	\v              竖向跳格
	\b              退格
	\r              回车
	\f              走纸换页
	\\              反斜线符"\"
	\'              单引号符
	\a              鸣铃
	\ddd            1~3位八进制数所代表的字符
	\xhh            1~2位十六进制数所代表的字符
    广义地讲,C语言字符集中的任何一个字符均可用转义字符来表
示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制
和十六进制的ASCII代码。如\101表示字母"A" ,\102表示字母"B",
\134表示反斜线,\XOA表示换行等。转义字符的使用
void main(){
  int a,b,c;
  a=5; b=6; c=7;
  printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}
     此程序练习转义字符的使用
     a、b、c为整数
     5->a,6->b,7->c
     调用printf显示程序运行结果
    printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);        
程序在第一列输出a值5之后就是“\n”,故回车换行;接着又是
“\t”,于是跳到下一制表位置(设制表位置间隔为8),再输出b值
6;空二格再输出c 值7后又是"\n",因此再回车换行;再空二格之后
又输出a值5;再空三格又输出b的值6;再次后"\t"跳到下一制表位置
(与上一行的6 对齐),但下一转义字符“\b”又使退回一格,故紧
挨着6再输出c值7。字符变量
    字符变量的取值是字符常量,即单个字符。字符变量的类型说明
符是char。字符变量类型说明的格式和书写规则都与整型变量相同。
例如: char a,b;
     每个字符变量被分配一个字节的内存空间,因此只能存放一个字
符。字符值是以ASCII码的形式存放在变量的内存单元之中的。如x的
十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予
'x'和'y'值:    a='x';
    b='y';
    实际上是在a,b两个单元内存放120和121的二进制代码:
    a0 1 1 1 1 0 0 0
    b0 1 1 1 1 0 0 1
    所以也可以把它们看成是整型量。 C语言允许对整型变量赋以
字符值,也允许对字符变量赋以整型值。在输出时, 允许把字符变
量按整型量输出,也允许把整型量按字符量输出。 整型量为二字节
量,字符量为单字节量,当整型量按字符型量处理时, 只有低八位
字节参与处理。
main(){
  char a,b;
  a=120;
  b=121;
  printf("%c,%c\n%d,%d\n",a,b,a,b);
 }    a ■    b ■
    a <--  120
    b <--- 121
    显示程序结果    char a,b;
    a=120;
    b=121;    本程序中说明a,b为字符型,但在赋值语句中赋以整型值。从结
果看,a,b值的输出形式取决于printf函数格式串中的格式符,当格
式符为"c"时,对应输出的变量值为字符,当格式符为"d"时,对应输
出的变量值为整数。void main(){
  char a,b;
  a='x';
  b='y';
  a=a-32;
  b=b-32;
  printf("%c,%c\n%d,%d\n",a,b,a,b);
 }        a,b被说明为字符变量并赋予字符值
    把小写字母换成大写字母
    以整型和字符型输出        本例中,a,b被说明为字符变量并赋予字符值,C语言允许字符
变量参与数值运算,即用字符的ASCII 码参与运算。由于大小写字母
的ASCII 码相差32,因此运算后把小写字母换成大写字母。然后分别
以整型和字符型输出。[Practice]      //charint a=49;
char b;
char d;
b=a+10;
d=a+b;'Vtable
a,2,49
b,1,随机
d,1,随机
 of Vtable
'Vupdate
1,49
2,随机
3,随机
2,';'
3,'l'
 of Vupdate
 of Practice
[Practice]        //char c1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;'Vtable
c1,1,随机
c2,1,随机
 of Vtable
'Vupdate
1,随机;2,随机
1,'a';2,'b'
1,'A';2,'B'
 of Vupdate
 of Practice
字符串常量
    字符串常量是由一对双引号括起的字符序列。例如: "CHINA" ,
 "C program: , "$12.5" 等都是合法的字符串常量。字符串常量和
字符常量是不同的量。它们之间主要有以下区别:    
    1.字符常量由单引号括起来,字符串常量由双引号括起来。
    2.字符常量只能是单个字符,字符串常量则可以含一个或多个字
      符。
    3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串
      常量赋予一个字符变量。在C语言中没有相应的字符串变量。
      这是与BASIC 语言不同的。但是可以用一个字符数组来存放一
      个字符串常量。在数组一章内予以介绍。
    4.字符常量占一个字节的内存空间。字符串常量占的内存字节数
      等于字符串中字节数加1。增加的一个字节中存放字符"\0"
      (ASCII码为0)。这是字符串结束的标志。例如,字符串
      "C program"在内存中所占的字节为:C program\0。字符常量
      'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况
      是不同的。    'a'在内存中占一个字节,可表示为:
        a
    "a"在内存中占二个字节,可表示为:
        a\0符号常量
    在C语言中,可以用一个标识符来表示一个常量,称之为符号常
量。符号常量在使用之前必须先定义,其一般形式为:    
    #define 标识符 常量      
 其中#define也是一条预处理命令(预处理命令都以"#"开头),
称为宏定义命令(在第九章预处理程序中将进一步介绍),其功能是
把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现
该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写
字母,变量标识符用小写字母,以示区别。
#define PI 3.14159
void main(){
  float s,r;
  r=5;
  s=PI*r*r;
  printf("s=%f\n",s);
}
    由宏定义命令定义PI 为3.14159    s,r定义为实数
    5->r
    PI*r*r->s
    显示程序结果
    float s,r;
    r=5;
    s=PI*r*r;
    本程序在主函数之前由宏定义命令定义PI 为3.14159,在程序中
即以该值代替PI 。s=PI*r*r等效于s=3.14159*r*r。应该注意的是,
符号常量不是变量,它所代表的值在整个作用域内不能再改变。也就
是说,在程序中,不能再用赋值语句对它重新赋值。

变量的初值和类型转换

变量赋初值
    在程序中常常需要对变量赋初值,以便使用变量。语言程序中可
有多种方法为变量提供初值。本小节先介绍在作变量说明的同时给变
量赋以初值的方法。这种方法称为初始化。在变量说明中赋初值的一
般形式为:    类型说明符 变量1= 值1,变量2= 值2,……;  例如:
    int a=b=c=5;
    float x=3.2,y=3f,z=0.75;
    char ch1='K',ch2='P';
应注意,在说明中不允许连续赋值,如a=b=c=5是不合法的。
void main(){
  int a=3,b,c=5;
  b=a+c;
  printf("a=%d,b=%d,c=%d\n",a,b,c);
}
   a<---3,b<--0,c<---5
   b<--a+c
   显示程序运行结果变量类型的转换
    变量的数据类型是可以转换的。转换的方法有两种, 一种是自
动转换,一种是强制转换。 自动转换发生在不同数据类型的量混合
运算时,由编译系统自动完成。自动转换遵循以下规则:    
    1.若参与运算量的类型不同,则先转换成同一类型,然后进行运
      算。
    2.转换按数据长度增加的方向进行,以保证精度不降低。如int型
      和long型运算时,先把int量转成long型后再进行运算。
    3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量
      运算的表达式,也要先转换成double型,再作运算。
    4.char型和short型参与运算时,必须先转换成int型。
    5.在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边
      量的类型将转换为左边量的类型。 如果右边量的数据类型长度
      左边长时,将丢失一部分数据,这样会降低精度, 丢失的部分
      按四舍五入向前舍入。图2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -