C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解

简介: 本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。

@[TOC]

C语言数据与数据类型

数据四类:常量 变量 表达式 函数
常量四类:整型常量 实型常量 字符型常量 字符串常量

1.常量

1.1 整型常量:三种形式(十进制,八进制,十六进制)

第一形式:十进制:是用一串连续的0....9数字
如32767,-32768,9,0,-7
第二形式:八进制:用数字0开头的一串连续合法八进制
如:013,05,0777,089(出错)
第三形式:十六进制:用0x或0X开头的一串连续合法的十六进制
如:0x12,0Xfff
若表示长整型常量则必须后加字母l或L,如0L,34l,0x123L

1.2 实型常量:两种形式(小数,指数)

第一形式:小数形式:由数字和小数点组成。
如:123.456 123. .456 0.456 都是合法的实型变量

c语言 .后面的0,或者.前面的0都可以省略

第二形式:指数形式:用"E"或"e"后紧跟一个整数表示以10为底幂数
如:1.23E-5
注:(1)字母E或e之前之后必须都有数字,且后必为整数。
(2)字母E或e的前后及各数字之间不能有空格

如判断合法性:
1.23e4(合法) 5.3e0.5(不合法).23e5(合法) 4E(不合法)

1.3 字符型常量:四种形式(常规,转义,八进制,十六进制)

第一形式:一对单引号‘’括一个字符
如:‘a ’ ‘A’ ‘@’ ‘9’

单引号中只能有一个字符,而且还不能为空,即有且仅有一个

第二形式:转义字符常量:必须以一个反斜杠"\"
常见的转义字符有:
\n 表示换行符
\t 表示制表符
\b 表示退格符
\r 表示回车符

第三形式第四形式,先不给出

/在单引号中不算一个字符,更像是一个预备动作,告诉计算机,我接下来的符号是转义符,如‘\n’是换行。'n'就是小写字母n,所以,单引号也不能只有/,如‘/’,计算机会认为你没有输入反斜杠后的符号,故会报错

1.4 字符串型常量:一种形式

定义:用一对双引号括起来的若干字符
如:"abcdefgh" "1234567"
注:(1) 每一个字符串尾都有一个字符串结束符‘/0’
(2)C语言中没有字符串变量,一定要区分好字符常量和字符串变量

正是因为c语言中没有字符串变量这种形式,字符串的尾部需要加上结束符,作为字符串的结束。

2.变量

变量使用规则:先定义后使用
定义格式:数据类型名 变量名列表;
比如: (1)int i;int j;int k;
(2)int i,j,k;
(3) int i=1,j=1,k=9;
注:(1)变量必须先定义后使用
int long float double char
(2)变量名属于用户标识符,遵守用户标识符命名规则。
(3)在同一"函数体"{ } 中不能定义同名变量
(4)同时定义多变量,必用逗号分隔
(5)变量可赋值(初始化),无初值是随机值

3.函数(标准函数 自定义函数)

根号7如何表示?sqrt(7)
|-5|如何表示?abs(-5)

4.表达式

定义:表达式:用运算符将数据连接起来的合法式子

运算符:三个属性:功能 优先级 结合性(运算方向)

4.1 算术运算符及算术表达式

算数运算符:+ - * / % 同级方向从左往右

==求余(%)==:
(1)两边运算对象必须是整型
如:7.0%3(不合法)
(2)求值方法:先忽略负号不计求出余数,再将所得的余数的符号定成与被除数相同的符号即可

17%3                  结果为:2
17%-3                 结果为:2
-17%3                 结果为:-2
-17%-3                结果为:-2

注:
(1)单独的常量,变量或函数调用都是c语言合法表达式
(2)凡是表达式都有一个确定的值

4.2 赋值运算符及赋值表达式

==赋值运算符==:= 方向自右向左
格式:变量名=表达式
例如:A=5+8 a=b=c=1+2

注意:

  1. 赋值运算符左边只能是一个变量

    如 a+b=3 和4=3都是非法表达式
    a=6 a+(b=3) 合法表达式

  2. 赋值运算符右边可以合法表达式

    如:a=b=20 a=(b=10)/(c=2)

  3. 赋值表达式的值就是赋值运算符左边变量值

  4. 实型数据赋给整型变量时,实型小数舍去,整型数据赋给实型变量时系统自动将整型数据转换成实型数据。

==复合赋值运算符==:
+= -= *= /= %= &= |= 等等
注意:复合赋值运算符的两个运算符中间不能有空格
如:a+ =3(不合法) a+=3(合法)

例1:
若有int a=5 b=8 则下列表达式的值是多少?用完表达式后变量a和b的值分别为多少?
a+=b/=a

先算右,b/=a,b=b/a,表达式的值为1,b=1
再算左 a+=1,a=a+1,表达式的值为6 a=5

例2:
int a=5,b=9;float c 则表达式c=b/a+1.2的值多少?

1+1.2=2.2

4.3 自增自减运算符

自增运算符:++
自减运算符:--

如:

i++; ++i; 等价于i=i+1;
i--; --i; 等价于i=i-1

注:

  1. 只能用于变量不能用于常量或表达式
    如 3++,(a+b)++,不合法的表达式
    如 int a=3; 则表达式的值 变量的值
int a=3
a++    表达式的值:3      变量的值:4
++a    表达式的值:4      变量的值:4
a--    表达式的值:3      变量的值:2
--a    表达式的值:2      变量的值:2

总结:先++,先算变量,后++,后+变量

4.4 逗号运算符及其表达式(顺序求值表达式)

格式:表达式1,表达式2,表达式3 .........,表达式n
逗号表达式:优先级最低
功能:逗号表达式的值就是表达式n(最后一个表达式的值,求值顺序是从左到右依次求解

4.5 强制类型转换(显式转换)

格式:
(类型名)表达式 或 (类型名)(表达式)
利用强制类型转换运算符可将一个表达式的值转换成指定的类型。
如:float x=123.345,y;
(1) int(x) 不合法
(2) ( int) x (int) (x)
(3)(int)x+y 不合法。(int)(x+y)

作业

题1: int a=3; 求a++*a

3*4=12

题2:若有定义int a=20,b=20,c=20,d=20;则下列表达式的值分别为多少?
A a++10
B 10
b++
C ++c/7
D (60+d++)%9

A: 20*10=200
B: 200
C:3
D:80%9=8

题3 关于隐式转换-自动完成

隐式转换自动完成意味着,不同数据类型之间计算的自动转换
原理是:字节数少的向高的转换
char一个字节 转换向int 两个字节
int 转换为unsigned 两个字节
unsigned 转换为 long 4个字节
long 转换为double 4个字节
image.png

相关文章
|
1月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
66 16
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
77 18
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
37 3
|
1月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
20 2
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
52 1
|
1月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
63 23
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
68 15
|
1月前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
61 24

热门文章

最新文章