C语言学习笔记day2

1. 常量

1.1 定义

在程序运行过程中不能被改变的量

1.2 整形常量

1.3 浮点型常量

1.4 字符常量

1.5 字符串常量

"ab" == 'a' + 'b' + '\0'

"ab\0" =='a' + 'b' + '\0' + '\0'

'\0' : 标识字符串结尾(每个字符串末尾都有一个\0)

"a" == 'a' + '\0'

'a' == 'a'

1.6 标识常量

#define PI 3.1415

注意:

1.宏定义名字可以小写,但为了和变量区分,一般都用大写

2.宏定义时能加括号就加括号,不要吝啬小括号

宏只是代码的替换,中间不进行任何数据计算的操作

2. 变量

2.1 定义

在程序运行过程中值可以发生改变的量,通常变量先定义再使用,默认为随机值

2.2 变量的定义

数据类型 变量名;

2.3 变量名

1.只能由字母、数字、下划线组成

2.不能以数字开头

3.不能与C语言关键字重名

4.最好不要与C语言库函数重名

5.变量名最好见名知意

6.可以采用驼峰法(软件编程常见)、Linux内核命令方法(内核开发

2.4 变量的初始化:

在定义变量时为变量赋初值

2.5 整形变量:

short Num;

unsigned short Num;

int Num;

unsigned int Num;

long Num;

unsiged long Num;

char Num;

unsigned char Num;

2.6 浮点型变量:

float f;

double d;

3. 数据类型转换

3.1 显式类型转换(显示类型转换)

(数据类型)变量名

将变量类型强制类型转换为括号内所写类型(注意:只临时转一次)

3.2 隐式类型转换:

不同数据类型完成数据运算、数据处理做隐式类型转换

转换规则:

1.低精度向高精度转换

1.浮点型比整形精度范围更高

2.同种类型所占字节空间越大,精度范围越高

3.无符号精度范围比有符号精度范围更高

2.char short 进行数据处理时会默认转换为int类型

float 进行数据处理时会默认转换为double类型

char short -> int 低

long

unsigned

float -> double 高

4. 语句

以 ; 号结尾的一段代码称为语句

5. 表达式

由一个或者多个运算符及 变量/常量 组成的式子称为表达式

表达式一定是有值

6. 运算符

6.1 算数运算符

*

/

% (唯一不能对浮点数操作的算数运算符)

++ : 自增运算符

-- : 自减运算符

i++ : 后置++ 先用再加

++i : 前置++ 先加再用

6.2 关系运算符

>

<

==

!=

>=

<=

泊尔类型:

bool

值域:

true 1

false 0

注意: 在C语言中:非0值为逻辑真值

0值为逻辑假值

6.3 逻辑运算符(重点)

&& : 逻辑与 既..又.. (全真为真,一假为假)

|| : 逻辑或 要么..要么.. (一真为真,全假为假)

! : 逻辑非 真取非得假,假取非得真

注意:截断特性(从左往右计算)

1.逻辑与一假为假,左边为假,右边不再计算

2.逻辑或一真为真,左边为真,右边不再计算

6.4 位运算符(重点)

& : 按位与 (与0得0、与1不变)

| : 按位或 (或1得1、或0不变)

^ : 按位异或 (相同为0、相异为1) num ^ num == 0 num ^ 0 == num

~ : 按位取反

>> : 右移

缩小移动的数字 : 除以2^n

<<:左移

放大移动的数字 : 乘以2^n

让一个字节第n位(从右往左第n位)置1:

num = num | (1 << n);

让一个字节第n位(从右往左第n位)置0:

num = num & ~(1 << n);

编写程序判断一个数二进制中有多少位1?

两个数交换(三种数据交换得方法):

1.使用临时中间变量完成交换

2.使用算术运算完成交换

3.异或可以完成数据交换

6.5 特殊运算符(三目运算符)

表达式1 ? 表达式2 : 表达式3;

表达式1为真,执行表达式2,否则执行表达式3

相关推荐
jmlinux14 分钟前
环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
c语言·stm32·单片机·嵌入式硬件
人工智能技术咨询.20 分钟前
张雪峰谈人工智能技术应用专业的就业前景!
人工智能·学习·计算机视觉·语言模型
s_little_monster22 分钟前
【QT】QT入门
数据库·c++·经验分享·笔记·qt·学习·mfc
alfiy1 小时前
Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群
笔记·学习·elasticsearch
爱学的小涛1 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛1 小时前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪1 小时前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
望森FPGA1 小时前
HDLBits中文版,标准参考答案 |3.1.1 Basic Gates | 基本门电路
学习·fpga开发
JavaGPT2 小时前
prometheus学习笔记之PromQL
笔记·学习·prometheus
害羞的白菜2 小时前
Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)
linux·运维·笔记·jmeter·nginx·centos·负载均衡