数据类型、运算符与表达式

C的数据类型

注:
数据类型决定:
1. 数据占内存字节数
2. 数据取值范围
3. 可以进行的操作

常量与变量

一、常量和符号常量
1.定义:程序运行过程中,其值不能被改变的量(常数)
2.分类:直接常量、符号常量

二、符号常量

用标识符代表常量
1.一般用大写字母:PRICE 、 PI
2.定义格式: #define 符号常量 常量
3.其值在作用域内不能改变和再赋值。
例 符号常量举例
#define PRICE 30
#include <stdio.h>
void main()
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%dn",total);
}(运行结果:total=300)
注:符号常量的优点是:见名知意、一改全改

变量

一、定义:其值可以改变的量。
二、定义格式:数据类型 变量名;
三、变量应该有名字,并在内存中占据一定的存储单元。
四、变量名和变量值有不同的含义
*变量名实为一个符号地址
例 变量的使用
main()
{
int a;
a=3;
printf(“a=%d",a);
}

标识符

一、定义:标识变量名、符号常量名、函数名、数组名、文件名的
字符串序列——名字。
二、命名规则:
*只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线
*大小写字母含义不同,一般用小写
*不能使用关键字
*TC允许最长32个字符,建议长度不超过8个字符
三、使用:先定义、后使用
注:标识符应该“见名知意”,如 total , max
标识符应该“不宜混淆”,如 l与1 , O与0

整型数据

一、整型常量(整常数)的三种表示方法
*十进制整数:由数字0~9和正负号表示.
如 123,-456,0
*八进制整数:由数字0开头,后跟数字0~7表示.
如 0123,011
*十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.
如 0x123,0xff
补充知识:
一、字节和位
1.内存以字节为单元组成
2.每个字节有一个地址
3.一个字节一般由8个二进制位组成
4.每个二进位的值是0或1

数值的表示方法

原码:最高位为符号位,其余各位为数值本身的绝对值
反码:
正数:反码与原码相同
负数:符号位为1,其余位对原码取反
补码:
正数:原码、反码、补码相同
负数:最高位为1,其余位为原码取反,再对整个数加1

负数补码转换成十进制数:最高位不动,其余位取反加1
例 补码:11111001
取反:10000110
加1: 10000111=-7

整型变量

一、整型数据在内存中的存放形式
*数据在内存中以二进制补码形式存放
*每一个整型变量在内存中占2个字节

二、整型变量的分类
*三类整型变量

*整数类型和取值范围

整型变量的定义

先定义后使用——强制类型定义
int a,b; ( 指定变量a、b为整型 )
unsigned short c, d; (指定变量c、d为无符号短整型 )
long e,f; ( 指定变量e、f为长整型)

整型数据的溢出

整型常量的类型

一、整型常量的值在-32768~+32767范围内,编译器认为是int类型
二、整型常量的值超过上述范围,而在-2147483648 ~ +2147483647范围内,编译器认为是long类型
三、当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量
四、在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L
五、在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。

浮点型数据

一、浮点型常量的表示方法
1.浮点数(float)又称为实数(real)
2.两种表示方法:
*十进制小数形式:必须有小数点
如 0.123 、.123 、123.0 、0.0 、123.
*指数形式:e或E之前后必须有数字;指数必须为整数
如 123.456e0、12.3456e1 、1.23456e2 、
0.123456e3 、0.0123456e4 等
二、规范化指数形式 6.28e-2 表示 6.28× 10 -2
*只有一位非零整数的指数形式
*是指数的输出形式-3.0824e4 表示 –3.0824× 10 4

浮点型变量

一、浮点型数据在内存中的存放形式
1.浮点型数据在内存中占4个字节(32位)
2.在内存中分成3部分,指数为2的幂次

二、浮点型变量的分类

float x,y; (指定x、y为单精度浮点型变量)
double z; (指定z为双精度浮点型变量)
long double t; (指定t为长双精度浮点型变量)
三、浮点型数据的舍入误差
*数据超过有效位数,则产生误差
*要避免一个很大的数与一个很小的数加减
浮点型数据的舍入误差
#include <stdio.h>
void main( )
{
float a , b;
a= 123456.789e5;
b= a+20;
printf("%f n",b);
}
运行结果:12345678848.000000
注:舍入误差使1.0/3*3 的结果并不等于1 !
四、浮点型常量的类型
*浮点型常量一般按双精度64位处理,数后加F或f按单精度
*浮点型常量不分float和double 字符型数据一、字符常量
*定义:用单引号括起来的单个字符或转义字符
如 ‘a’ ‘A’ ‘n’ ‘t ’
*字符常量的值:该字符的ASCII码值
如 ‘a’——97 ,‘A’——65
‘n’——10, ‘t’——9
*定义格式:char 变量名 = 值
char ch=65 与 char ch=‘A’ 与char=‘101’是等效的
*转义字符:反斜线后面跟一个字符或一个代码值表示转义字符及其含义

转义字符的使用
#include <stdio.h>
void main( )
{ printf(“ ab ct derftgn”);
printf(“htibbj k”);
显示结果:
f gde
h j k

字符型数据

一、字符变量
*存放字符常量,占用一个字节,存放一个字符
*定义形式: 赋值:
char c1,c2; c1=‘a’;c2=‘b’;
二、字符数据在内存中的存储形式及其使用方法
*以二进制存放字符的ASCII码值(0~255整数)
*与整数的存储形式类似
**以字符或整数形式输出
向字符变量赋整数
#include <stdio.h>
void main( )
{ char c1,c2 ;
c1=97 ;
c2=98 ;
printf(“%c %c n",c1,c2);
printf(“%d %d n",c1,c2);
}
运行结果:a b
97 98
注:*输出形式取决于printf函数中的格式符
*格式符为“%c”时输出的变量值为字符
*格式符为“%d"时输出的变量值为整数
三、对字符数据进行算术运算
*实质是对其ASCII值进行算术运算
大小写字母的转换
#include <stdio.h>
void main( )
{char c1,c2 ;
c1=‘a’ ;
c2=‘b’ ;
c1=c1-32; //小写字母比大写字母的ASCII码大(32)10
c2=c2-32;
printf(“%c %c ",c1,c2);
}
*字符型与整型间互相赋值
例: 互相赋值
#include <stdio.h>
void main( )
{int c1;
char c2 ;
c1=‘a’ ;
c2=98 ;
c1=c1-32;
c2=c2-32;
printf(“%c %c ",c1,c2);
}
运行结果为:A B

字符串常量

一、定义:用双引号(“ ”)括起来的字符序列
“How do you do” , “CHINA” , “a” , “$123.45”
二、存储:每个字符串尾自动加一个 ‘0’ 作为字符串结束标志

注:没有字符串变量,只能用字符数组存

变量赋初值

1.变量的使用:先定义,后使用
2.变量定义位置:一般放在函数开头
3.变量初始化:可以在定义时赋初值

各类数值型数据间的混合运算

整型、实型、字符型数据间可以混合运算
一、自动转换
1.什么情况下发生
*运算转换------不同类型数据混合运算时
*赋值转换------把一个值赋给与其类型不同的变量时
*输出转换------输出时转换成指定的输出格式
*函数调用转换------实参与形参类型不一致时转换
2.运算转换规则:不同类型数据运算时先自动转换成同一类型

二、强制转换(见P56强制类型转换运算符部分)
1.一般形式:(类型名)(表达式)
例:(int)(x+y) //强制类型转换运算符
(int)x+y
(double)(3/2)
(int)3.6
2.说明:强制转换得到所需类型的中间变量,原变量类型不变

#include <stdio>
main()
{ float x;
int i;
x=3.6;
i=(int)x; //表达式仅一个变量时,括号可以省略
printf(“x=%f,i=%d”,x,i);
}
结果:x=3.600000,i=3
注:较高类型向较低类型转换时可能发生

算术运算符和算术表达式

一、算术运算符和算术表达式
1.基本算术运算符: + - * / %
*结合方向:从左向右
*优先级:- ---->* / % -----> + -
(2) (3) (4)
说明:
1.“-”可为单目运算符时,右结合性
2. 两整数相除,结果为整数
3. %要求两侧均为整型数据
4.+ - * / 运算的两个数中有一个数为实数,结果是double型
例 5%2 = 1
-5%2 = -1
1%10 = 1
5%1 = 0
5.5%2 ()
二、自增、自减运算符++ --
1.作用:使变量值加1或减1
2.种类:
*前置 ++i, --i (先执行i+1或i-1,再使用i值)
*后置 i++,i-- (先使用i值,再执行i+1或i-1)
例j=3; k=++j; //k=4,j=4
j=3; k=j++; //k=3,j=4
j=3; printf(“%d”,++j); //4,j=4
j=3; printf(“%d”,j++); //3,j=4
a=3;b=5;c=(++a)*b; //c=20,a=4
a=3;b=5;c=(a++)*b; //c=15,a=4
几点说明:
1.++ -- 不能用于常量和表达式,如 5++,(a+b)++
2.++ -- 结合方向: 自右向左
3.优先级:- ++ -- ------>* / % ----->+ -
(2) (3) (4)
4.该运算符常用于循环语句中,使循环变量加减1
例 -i++ //-(i++)
i=3; printf(“%d”,-i++); //-3
三、有关表达式使用中的问题说明
1.不同系统对运算符和表达式的处理次序不同,尽可能写通用性强的语句
2.不要写有歧义和不知系统如何执行的程序

赋值运算符和赋值表达式

一、简单赋值运算符
1.符号: =
2.格式: 变量标识符=表达式
3.作用:将一个数据(常量或表达式)赋给一个变量
4.左侧必须是变量,不能是常量或表达式
例 a=3; d=func(); c=d+2;
例 3=x-2*y; a+b=3; (×)
二、类型转换
1.赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型
例1: float f ; int i=10; f=i;
则 f=10.0
例2:int i;
i=2.56; //结果i=2;
三、复合赋值运算符
1.种类:+= -= *= /= %= 《= 》= &= ^= |=
2.含义:exp1 op= exp2  exp1 = exp1 op exp2
四、赋值表达式
1.形式:<变量> <赋值运算符> <表达式>
2.赋值表达式的值与变量值相等,且可嵌套
例: a=b=c=5 //表达式值为5,a,b,c值为5
a=(b=5) // b=5;a=5
a=5+(c=6) //表达式值11,c=6,a=11
a=(b=4)+(c=6) //表达式值10,a=10,b=4,c=6
a=(b=10)/(c=2) //表达式值5,a=5,b=10,c=2逗号运算符和逗号表达式1.形式:表达式1,表达式2,……表达式n
2.结合性:从左向右
3.优先级: 15,级别最低
4.逗号表达式的值:等于表达式n的值
5.用途:常用于循环for语句中
例 a=3*5,a*4 //a=15,表达式值60
a=3*5,a*4,a+5 //a=15,表达式值20
例 x=(a=3,6*3) //赋值表达式,表达式值18,x=18
x=a=3,6*a //逗号表达式,表达式值18,x=3
例 a=1;b=2;c=3;
printf(“%d,%d,%d”,a,b,c); //1,2,3
printf(“%d,%d,%d”,(a,b,c),b,c); //3,2,1
例: 逗号表达式使用
main()
{ int x,y=7;
float z=4;
x=(y=y+6,y/z);
printf("x=%dn",x);
}
运行结果:X=3

公众号:学生成才
内容:提供更好的学习资源

addressof表达式不能转换为long_【C语言】03-数据类型、运算符与表达式相关推荐

  1. 数据类型,运算符和表达式03 - 零基础入门学习C语言04

    第二章:数据类型,运算符和表达式03 让编程改变世界 Change the world by program 字符型数据 字符型数据包括字符常量和字符变量 字符常量: 是用单引号括起来的一个字符. 例 ...

  2. 数据类型,运算符和表达式02 - 零基础入门学习C语言03

    第二章:数据类型,运算符和表达式02 让编程改变世界 Change the world by program 整型变量 整型变量的分类(注意:这里占多少个字节跟系统和编译器规定有关!可以在编译器上自己 ...

  3. c语言程序计算p q真值表,C语言程序设计第2章数据类型﹒运算符和表达式.ppt

    C语言程序设计第2章数据类型﹒运算符和表达式 教学目标 掌握C语言标识符的组成 理解C语言的基本数据类型 掌握变量定义的方法 掌握常用的运算符的使用 掌握混合运算的数据转换方法 2.1 C语言的数据类 ...

  4. 二进制补码求值用c语言,C语言程序设计第2章数据类型.运算符与表达式.ppt

    C语言程序设计第2章数据类型.运算符与表达式 教学目标 掌握C语言标识符的组成 理解C语言的基本数据类型 掌握变量定义的方法 掌握常用的运算符的使用 掌握混合运算的数据转换方法 2.1 C语言的数据类 ...

  5. 信工干货||C语言中的运算符和表达式

    C语言中的运算符和表达式 1算术运算符及表达式 (1)算术运算符包括: ,-,*,/,%. (2)*,/,%同级,比 ,-高. (3)"%"运算符两侧的运算分量必须为整型数据,且运 ...

  6. c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...

    1.第2章 数据类型.运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称,数值.字符.文本等都是数据,在各种程 ...

  7. c语言常数-ox6a是什么意思,C语言第2讲-数据类型运算符和表达式.pdf

    C语言第2讲-数据类型运算符和表达式 高级语言程序设计 (C Programming) 丁嵘 第二讲:数据类型.运算符和表达式 本章目录  2.1 基本符号  2.2 C语言的数据类型  2.3 ...

  8. 51单片机c语言除法符号,51单片机之C语言-4.4运算符及表达式

    原标题:51单片机之C语言-4.4运算符及表达式 4.4 及 前面三节实际是讲如何定义一个数据类型,所谓数据类型其实就是不同存储空间的形状,也就是不同单元格的组合方式.既然定义了数据类型,我们的目的当 ...

  9. 2、C语言面试笔试---运算符和表达式

    文章目录 背景 1.运算符和表达式 1.1自增自减运算符++与-- 1.2 C语言符号的优先级 1.3 类型转换 1.4 顺序点的概念 1.5 贪心法 2.面试笔试例题 背景 1.运算符和表达式 1. ...

  10. c语言表达式用法,C语言开发之运算符、表达式用法

    C语言中运算符和表达式数量之多,在高级语言中是少见的.正是丰富的运算符和表达式使C语言功能十分完善.这也是C语言的主要特点之一.C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性.在 ...

最新文章

  1. MCU小tips(提高效率)
  2. day2-列表、元组、字典、字符串
  3. 即将放弃python的app_python放弃之 模块和包
  4. 【活动预告】“智能医疗技术应用”线上论坛
  5. 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作
  6. 计算机网络提供服务靠,计算机网络体系结构及协议之通信子网的操作方式和网络层提供的服务...
  7. linux如何停止死循环脚本,Linux Shell教程(一)
  8. 浙大 PAT 甲级1009
  9. Apache HttpServer与Tomcat7集群Linux版
  10. vue-cli3 中 sockjs-node/info?t=报错 的解决方法
  11. Flutter之播放视频
  12. 解决办法:error: item inner element must either be a resource reference or empty.
  13. 计算机信息安全工程师教材,第二级 系统审计保护级-信息安全工程师教材
  14. Premiere 快捷键
  15. 搜狗输入法模糊音设置 (非自定义短语设置)
  16. 【Java基础】Debug模式操作流程及案例:不死神兔、百钱百鸡
  17. [蓝桥杯][算法提高VIP]我们的征途是星辰大海
  18. R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
  19. CarSim教程(一)- 基本操作
  20. 人事工资管理系统免费PPT

热门文章

  1. 产业企业和投资机会研究 沈阳新松机器人自动化股份有限公司(300024)
  2. 解密小程序码:36条放射线
  3. js获取url参数方法
  4. CLR via C# 读书笔记 3-6 比较APM和EAP(异步编程模型和基于事件的编程模式)
  5. 强化学习(reinforcement learning)教程(后面是翻译)
  6. java opencv去除干扰线_电子产品硬件研发—提高抗干扰性能的常用方法
  7. 提交json数据给Java_java 实现通过 post 方式提交json参数操作
  8. python-获取当前文件名
  9. sklearn 模型选择和评估
  10. Python实现四种方法求解计算阶乘和(1!+2!+3!+...+n!)