c语言笔记2

2024.7.24

变量

概念

表面:程序运行过程中取值可以改变的数据

实质:变量代表了一块内存区域/单元/空间,变量名可视为该区域的标识。分为三部分:

    1. 变量名:一个标识,借助变量名来存取数据
    2. 变量空间/内存单元:内存中分配的一块用来存储数据的空间
    3. 数据/变量值:存放在变量空间中的数据

把数据存放间变量名对应空间的过程称之为变量的赋值操作

语法

[修饰符] 数据类型 变量列表

命名规范

  1. 变量名可以由数字,字母(区分大小写)、下划线_、$组成,不以数字开头
  2. 不建议使用中文,也不建议使用拼音。
  3. 变量名不能与系统中已有的标识符重复。(比如关键字、保留字。Eg:int,signed,if,break)

案例

//方式1:先声明后赋值。赋值操作顺序,从左往右。

int num1;

num1 = 21;//赋值操作顺序,从右往左。将21赋值给num1(num1变量名对应的内存单元)

printf(“%d”,num1);

//方式2:声明并赋值

int nmu2 = 21;//1.向内存申请了一块存储单元(分配内存)2. 将21赋值num2(num2变量名对应的内存单元)

//方式3:覆盖初始值

int num3 = 21;

num3 = 22;

//方式4:逗号“,”在c语言中可以作为分隔符和运算符使用

int x=12,y=13;

说明

1.变量定义时,利用同一个类型标识符可以同时定义多个变量,各个变量之间使用,(英文逗号)分割。

2.定义变量后,如未对变量进行初值的赋予,则变量所代表的内存空间中的数据是随机的

3.可以在变量定义的同时给变量赋值,这个操作称为变量的初始化,c语言允许对变量进行初始化

4.初始化变量是,尽量做到类型相同,例子:long 1=5767L

5.整型数据在内存中的存放方式:

按照补码方法存放:

6.浮点数数据在内存中存放方式

7.字符数据在内存中的存放数据:

字符的存在分为两种形式:ascii码(编号从0开始的正整数)和ascii值(数据,包括英文字母大小写,数字,特殊符号)

注意:ascii码可以和整数进行数学运算

Eg:

Char c1  = ‘A’;

Char c2  =  60;

Char c2  = ‘fk------+‘

扩展

iso-8859-1:西欧编码,一般遇到直接改编码

gbk:国标,中国标准编码库/字符库,收录了大量的汉字加中文符号

utf-0:全球标准,几乎收录了全球的各种字符集,包括gbk包含的常用汉字以及中文符号

ascii:字符集,c语言字符就是以ascii码进行存储,针对程序内部存储

数据类型之间的转换

规则:需要不同的数据类型参与运算,需要转换为同一类型后运算

数值比较由小到大,简单排序:

short<char<int<long<float<double

1.隐式类型转换

说明:编译系统自动完成

一般是低优先级类型向高优先级类型转换,被称为自动类型转换(由小到大)

语法:

大数据类型 变量 = 小数据类型 变量

Eg:案例1

char c = ‘A’;

int num = c + 12;

printf(“%d”,num);

案例2

Char c2 = ‘A’;

Int num2 = c2+22;

2.强制类型转换:

说明:由程序员实现,一般是高优先级类型向低优先级类型转换,称为强制类型转换(由大到小)

语法:

小数据类型 变量名 = (小数据类型)大数据类型变量;

Eg:案例1

int num1 = 65;

Char c1 = (char)num1;

Printf(“%c”,c1);//A

案例2

Int num2 = 65;

Char c2 = (char)(num2+32)

Printf(“%c”,c2);//a

注意:强制类型转换过程中,可能会出现精度缺失的问题。如果大类型数据范围<=小类型数据范围,此时数据不会丢失,正常转换;如果大类型数据范围>小类型数据范围,此时丢失超出部分的数据,精度会丢失。

原则:类型转换不会改变原变量类型

运算符

算术运算符

单目运算符

说明: ++  --  +(正)  -(负)  *

++a与a++区别

int a = 1;int x = a++;//++在后,先运算,后加1

int a = 1;int x = ++a;//++在前,先加1,后运算

i+++(++i)

--a与a--区别

int a = 1;int x = a--;//--在后,先运算,后-1

int a = 1;int x = --a;//--在前,先-1,后运算

双目运算符

说明:+  -  *  /  %

举例:

#include<stdio.h>

Int main(){

Printf(3/2);//1,为什么不是1.5,因为是整型运算,舍弃小数部分

Printf(3*1.0/2);//1.5,3*1.0转换为double类型

Printf(10 % 3 );//1 求模运算(取余)

Printf(10.0%3);//error 取余运算是针对整数进行的’

Return 0;

}

注意:

1.两个整数相除的结果是整数,小数部分被舍弃。要想结果是实数,可在分子*1.0(隐式类型转换)

2.求模运算(取余运算)左右两边操作数必须都是整型。如果类似于3.0这样的数,是错误的

关系运算符

说明:>  <  >=  <=  !=  ==

案例:

什么是表达式?

表达式就是表达某种意思的数式。在c语言中,表达式指的是运算符连接操作数(变量/常量。。。)

由关系运算符构成的表达式,称为关系表达式,关系表达式的值为boolean(布尔值)非0

非0:关系成立,真

0;关系不成立,假

逻辑运算符

说明:&&()  ||(或)  !(非)

&&:逻辑与(且),符号两边的操作数都为,结果才为真。举例:((5>4)&&(5-4)>1),结果0

||逻辑或(或),符号两边的操作数,只有一个为真时,结果也为举例:((5>4)||(5-4)>1),结果1

!:逻辑反(取反),取反,非0为真。举例:!(!(5>4)),结果1

惰性运算

减少运算次数

短路与:&&两边的操作树,只要左边的操作数不成立,直接返回,不校验右边操作数。

短路或:||两边的操作树,只要左边的操作数成立,直接返回,不校验右边操作数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值