第二章 C语言数据类型、变量和常量

本文介绍了C语言的基本语法规则,包括如何使用#include导入头文件、main函数的作用、printf函数的使用以及return语句。通过实例展示了输出语句和换行符 的使用。进一步讲解了数据类型,如常量(整型、实型、字符型、字符串)、变量的定义与初始化,以及不同类型变量的取值范围。最后,文章提到了字符常量的ASCII码和符号常量的定义。内容涵盖了C语言的基础知识,适合初学者入门学习。
摘要由CSDN通过智能技术生成

通常在学习程序设计语言的初期,要从基本要素入手,逐步掌握语言的各种语法规则

就好比造一座大厦,基础没有打好基于往上盖,其后果可想而知

所以要想熟练的使用C语言进行程序设计是一个循序渐进的过程

这篇文章开始我们会写一些C语言代码,循序渐进的掌握C语言的语法规则

简单代码运行

代码1:

1  #include <stdio.h>                     	
2  int main(void)
3  {  				
4  	printf("HelloWorld!");   	
5  	return 0;
6  }
  • #include <stdio.h>:stdio.h为系统文件,内部定义了printf()等方法,在程序最开始可以使用include将头文件引入进来
  • int main(void):在一个C程序中有且仅有一个main()函数,他是程序运行的入口,main函数前面表示的是程序的返回值类型,后面表示的是传入参数,这里传入参数为void,也就是为空(可省略),返回参数是int类型
  • printf("HelloWorld!");:此处调用了标准输出函数,会将引号中的内容输出到屏幕上,语句后的分号表示该语句的结束
  • return() 语句可以就结束程序,一般返回0表示程序运行正常,返回其他值则表示不同的错误情况

代码2:

1  #include <stdio.h>
2  int main(void)
3  {
4  	    printf("Programming is fun.\n");
5    	printf("And Programming in C is even more fun!");
6    	return 0;
7  }

\n:换行符,表示在输出“Programming is fun.”后换行,\n是转义字符,在本章节会介绍

代码3:输入半径,分别计算球体积和球表面积

设球半径为r、球体积为v、球表面积为f,球体积和球表面积的计算公式如下:

1  #include<stdio.h>
2  #define PI 3.14159				  	
3  void main()
4  {
5      int r;
6      float v,f;
7      r=2;
8      v=4.0*PI*r*r*r/3.0;
9      f=4.0*PI*r*r;
10      printf("体积为:%f,表面积为:%f\n",v,f);
11  }

C语言的数据类型

C语言的常量

常量是指在程序运行的过程中值不能被改变的量

直接常量

1. 整数常量

  • 十进制表示:由数字0~9,正、负号组成
  • 八进制表示:以0(数字0)为前缀,其后由数字0~7组成;八进制数一般是无符号数
  • 十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成,十六进制数一般是无符号数

2. 实型常量

实型常量即实数,又称为浮点数。

C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。

  • 小数形式:如12.345,3.,-.123。
  • 指数形式:由尾数部分、字母E或e和指数部分组成,格式为:±尾数E指数

TIPS:

(1) 以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。
(2) 以指数形式表示实数时,字母E (或e)的前后必须有数字,并且指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。

3. 字符型常量

  • (1) 字符常量只能用单引号括起来,不能用双引号或其它括号。
  • (2) 字符常量只能是单个字符,不能是多个字符组成的字符串。
  • (3) 字符可以是ASCII字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCII码值按升序连续排列。
  • (4) 对于控制符(如回车、换行等)与不可见字符,在C语言中通过转义字符来表示。

常见转义字符:

转义字符转义功能ASCII码值
\0空字符0
\a响铃7
\b退格(Backspace)8
\t水平制表符(横向跳格)9
\n回车换行(Enter)10
\v竖向跳格11
\f换页12
\r回车13
"双引号(”)34
'单引号(’)39
?问号(?)63
\反斜线字符(\)92
\ddd1~3位八进制所代表的字符
\xhh1~2位十六进制所代表的字符

 转义字符的使用示例

1  #include<stdio.h>
2  int main()
3  {	
4      char b,c,d,e;
5      b='\43';
6      c='\103';
7      d='\x2a';
8      e='\x41';
9      printf("b=%c,c=%c,d=%c,e=%c\n",b,c,d,e);
10     printf("\"good\0morning!\b\"!\n");	
11     printf("\123456");
12     return 0;
13  }

运行结果:

b=#,c=C,d=*,e=A
“good morning”!
S456

4. 字符串常量

字符串常量是由一对双引号””括起来的零个或多个字符序列,如:”HelloWorld”

字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号

字符串中还可以使用空字符,如:”” 表示空串,即不包含任何字符

注意:

  • 系统自动在每个字符串的尾部加上’\0’作为字符串的结束标志
    • n个字符组成的字符串,在内存中要占用n+1个字节空间
    • 可以使用sizeof运算符来计算字符串占用的内存空间大小
  • 字符串的长度等于该字符串中所包含的有效字符的个数
    • 在字符串中如遇到’\0’则认为该字符串结束
    • 如果字符串中有转义字符,则一个转义字符作为一个字符
    • 可以使用strlen()函数计算字符串的长度
  • 字符常量和字符串常量在内存中的存储情况是不同的
    • 如’6’在内存中占1个字节,存储的是其ASCII码
    • “6”在内存中占2个字节,一个字节存储’6’,一个字节存储’\0’

符号常量

在C语言中,可以用一个标识符来表示一个常量,称之为符号常量

符号常量在使用之前必须先定义,其一般形式为:

#define 标识符 常量值

一个#define命令只能定义一个符号常量,若要定义多个符号常量,需使用多个#define命令

例:某程序需要使用一个代表常数3.145的符号常量名xp,则以下定义中正确的是 。
A.#define xp 3.145;
B.#define xp(3.145)
C.#define xp=3.145
D.#define xp 3.145

答案:D

例:已知某程序如下:
#define P 2.5
void main( )
{
printf(“%f”, P);
}
则main函数中标识符P代表的操作数是____

答案:2.5

例:利用符号常量计算价格

1  #include<stdio.h>
2  #define PRICE 20
3  int main()
4  {
5      int num,total;
6      num=10;
7      total=num* PRICE;
8      printf("总价格为:%d\n",total);
9      return 0;
10  }

运行结果:

总价格为:200

符号常量的使用,可以为编写程序提供很多好处:

  • 增加程序的可读性
  • 提高程序的可维护性
  • 简化程序代码
  • 方便数组的定义

C语言的变量

在程序的运行过程中,其值可以被改变的量称为变量

变量用于从外部接收数据、保存一些不断变化的值、保存中间结果及最终结果,而这些都无法用常量来实现

变量的定义与使用

1. 变量的定义

[存储类型] 类型说明符 变量名;

  • 定义四个静态的整型变量a,b,c,d:static int a,b,c,d;
  • 定义两个字符型变量ch1,ch2:char ch1,ch2;
  • 定义一个单精度浮点数变量f:float f;

TIPS:

  1. 类型说明符必须是C语言中的有效数据类型,如int、float、double、char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少
  2. 变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法的C语言标识符,变量名一般使用小写字母
  3. 变量的定义必须放在变量的使用之前,一般在函数体的开头部分进行定义

2. 变量的初始化

C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化

  • 定义一个整型变量x并赋初值为2:int x=2;
  • 定义两个整型变量s和t,分别赋初值为1:int s=1,t=1;
  • 定义一个单精度型变量f并赋初值为3.68:float f =3.68;
  • 定义一个字符型变量ch并赋初值为字符x:char ch='x';

TIPS:

  • 对一个变量赋初值之后,该值被存储在分配给该变量的内存空间中
  • 不允许对多个未定义的同类型变量连续初始化
  • 初始化时,“=”右边表达式的数据类型和“=”左边的变量的类型如果不一致,系统会进行自动赋值转换
  • 没有进行初始化的变量,其值是由定义时所使用的存储类型决定的

3.变量的使用

变量应该先赋值,后应用

例:变量使用示例

1  #include<stdio.h>
2  int main()
3  {
4      int a,b,c;
5      char ch='A';
6      a=10;
7      b=a+ch;
8      scanf("%d",&c);
9      printf("%d,%d,%d,%c\n",a,b,c,ch);
10      return 0;
11  }

运行结果:

若程序运行时输入:
10↙
则程序的运行结果如下:
10,75,10,A

整形变量

Visual C++ 2010环境下,各种整型的关键字及占用内存字节数和取值范围如下表:

关键字类型占用字节数取值范围
short int短整型2-32768~32767
int整型4-2147483648~2147483647
long int长整型4-2147483648~2147483647
unsigned short无符号短整型20~65535
unsigned int无符号整型40~4294964295
unsigned long无符号长整型40~4294964295

TIPS:

  • 各种无符号整数所占的字节数与相应的有符号整数相同。但由于省去了符号位,故不能表示负数。
  • 有符号整数以二进制补码形式存储。最左边第1位表示符号,该位为0,表示正数,该位为1,表示负数。
  • 无符号整数以二进制原码形式存储。

例:不同类型整型变量的定义与使用示例

1  #include<stdio.h>
2  int main()
3  {
4      int a,b,c,d;
5      unsigned long e;
6      a=5;b=6;e=10;
7      c=a+e;
8      d=b+e;
9      printf("c=%d,d=%d\n",c,d);
10      return 0;
11  }

运行结果:

c=15,d=16

例:短整型变量的溢出

1  #include<stdio.h>
2  int main()
3  {
4      short int a, b;
5      a = 32767;
6      b = a + 10;
7      printf("a=%d, b=%d\n", a, b);
8      return 0;
9  }

运行结果:

a=32767,b=-32768

实型变量

实型的关键字及占用内存字节数和取值范围如表所示:

关键字类型占用字节数取值范围
float单精度型43.4E-38~3.4E+38
double双精度型81.7E-308~1.7E+308
  • 单精度型数据能保留7位有效数字
  • 双精度型数据能保留16位有效数字

例:实型变量的使用示例

1  #include<stdio.h>
2  int main()
3  {
4      float a=1234.56789;
5      double b=1234.567895678;
6      printf("a=%f,b=%f\n",a,b);
7      return 0;
8  }

运行结果:

a=1234.567871,b=1234.567896

字符型变量

  • 字符型变量的值是字符常量,即用单引号引起来的单个字符
  • 字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同

TIPS:

由于字符常量在内存中占用一个字节,用于存储它的ASCII码值
所以C语言中的字符具有数值特征,可以像整数一样参加运算
允许对整型变量赋以字符值,也允许对字符变量赋以整型值。

举个例子:

例:字符变量的使用示例

1  #include<stdio.h>
2  int main()
3  {
4      char c1,c2;
5      c1='A';
6      c2=65;
7      printf("%c,%c\n",c1,c2);
8      printf("%d,%d\n",c1,c2);
9      return 0;
10  }

运行结果:

A,A
65,65

例:字符变量的使用示例

1  #include<stdio.h>
2  int main()
3  {
4      char c1,c2;
5      c1='A';
6      c2='B';
7      c1=c1+32;
8      c2=c2+32;
9      printf("%c,%c\n",c1,c2);
10      printf("%d,%d\n",c1,c2);
11      return 0;
12  }

运行结果:

a,b
97,98

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值