当前位置: 首页 > news >正文

C语言二刷

const

#include<stdio.h>
int main() {const int amount = 100;int price = 0;scanf("%d", &price);int change = amount - price;printf("找您%d元\n", change);return 0;
}

浮点数类型

输入输出
float(单精度)%f%f    %lf
double(双精度)%lf%f
long double(长双精度)%Lf%Lf

上面的float类型在输出的时候会发生隐形类型转换位double类型,所以输出也可以用%lf。

虽然float和double的输出也可以用%Lf,但是这种隐式转换可能会导致一些潜在的精度损失或不符合预期的输出。

运算符和算子

运算符是用于执行特定运算操作的符号。例如算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符等。

算子是参与运算的对象,可以是常量、变量或表达式。在一个运算表达式中,算子是运算符作用的目标。

switch-case

switch (控制表达式)
{
case 常量:语句;
case 常量:语句;......
default:break;
}
  • 控制表达式只能是整数型的结果
  • 常量可以是常数,也可以是常数计算的表达式(1+1)

case只是一个入口,遇到第一个break才会停止,比如以下代码:

switch (type)
{
case 1:
case 2:printf("你好");//输入1,输出你好break;
case 3:printf("晚上好");
case 4:printf("再见");//输入3,输出晚上好再见break;
default:printf("啊?什么啊?");break;

循环的选择

  • 如果有固定次数,用for
  • 如果必须执行一次,用do_while
  • 其他情况用while

do-while循环

do{}while();

for循环

for循环中每一个表达式都是可以省略的。

for(; 条件 ;)==while(条件)。

int a = 0;
for (; a < 10;) {a++;
}
printf("%d",a);//输出10

for(; ;)是一个无限循环,如果没有在循环体内正确地设置退出条件,程序将一直运行下去,可能会导致资源耗尽、程序无响应等问题。

    int num = 0;for (; ;) {printf("Number: %d\n", num);num++;if (num == 10) {break;}}

sizeof

静态运算符

int a = 0;
printf("%d\n", sizeof(a++));//输出4
printf("%ld",sizeof(a+1.0));//输出8
printf("%d\n", a);//输出0
return 0;

计算机的字长

CPU(中央处理器)和RAM(存储器)之间用总线连接,CPU中有一个寄存器(Reg)。

字长为32个bit时,每一个寄存器可以表达32个bit的数据,也就是当从内存中取数据到CPU里,每次会取32个bit。

int是用来表达寄存器的,所以不同编译器上int类型的大小不同。

科学计数法

1.23e4表示1.23×10⁴,即12300;

-5e-2表示-5×10⁻²,即-0.05。

转义字符(逃逸字符)

  • \' :⽤于表⽰字符常量'
  • \" :⽤于表⽰⼀个字符串内部的双引号
  • \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
  • \b :退格键,光标回退⼀个字符,但不删除字符。
  • \n :换⾏符。
  • \r :回⻋符,光标移到同⼀⾏的开头。
  • \ddd :ddd表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
  • \xdd :dd表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
  • \ 0 :null字符,代表没有内容, \ 0 就是  \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其 ASCII码值是0

自动类型转换

当运算符两边出现不一致的类型时,会自动转换成表达范围更大的类型

  • char->short->int->long->long long
  • int ->float->double

对于printf,任何小于int的类型会被转换成int,float会被转换成double

scanf不会自动转换,输入short时,需要%hd

!>&&>||

函数

函数头包括函数类型(返回值类型)、函数名和参数列表(形式参数列表)。

当函数名不是void时,通常要有带值的return。

声明 -> 调用 -> 定义

传值

每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系

过去,函数参数表中的参数叫做形式参数,调用函数时给的值叫做实际参数。

为了防止初学者误会实际参数就是实际在函数中计算的参数,误会调用函数的时候把变量而不是值传进去了,现在认为它们是参数和值的关系。

本地变量(局部变量)(自动变量)

函数的每次运行会产生一个独立的变量空间,在这个空间的变量是函数这次运行所独有的,称作本地变量。定义在函数内部的变量就是本地变量,参数也是本地变量。

没有参数时

void f():在传统C中,表示f函数的参数表未知,并不代表没有参数

C语言不允许函数嵌套定义(可以声明)

数组

int a[10]={[0]=2,[2]=3,6,
};

上面的代码中未明确初始化的元素,会被自动初始化为0。

数组大小

int sz=sizeof(a)/sizeof(a[0]);

遍历数组

一维数组

for(i=0;i<sz;i++){
printf("%d:%d",i,a[i]);
}

常见错误:

  • 循环结束的条件是<=数组长度
  • 离开循环后,继续用i的值作为数组元素的下标

二维数组

for (i = 0; i < 3; i++) {for (j = 0; j < 5; j++) {a[i][j] = i * j;}
}

a [ i ] [ j ] 表示 i 行 j 列,a [ i,j ] 表示a [ j ] 

二维数组初始化时列数不能省略

int a[][5] = {{0,1,2,3,4},{2,3,4,5,6},
}

或者写成一维数组初始化时的形式:

int a[][5] = {{0,1,2,3,4,2,3,4,5,6},
}

输出:

0 1 2 3 4 
2 3 4 5 6 
http://www.lryc.cn/news/469167.html

相关文章:

  • C++模块化程序设计举例
  • 毕业设计选题:基于Python的招聘信息爬取和可视化平台
  • 机器人学习仿真框架
  • 力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
  • 2024.10月22日- MySql的 补充知识点
  • Java中的对象——生命周期详解
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 第 6 章 机器人系统仿真
  • 爬虫——scrapy的基本使用
  • 聚类分析算法——K-means聚类 详解
  • 【Sublime Text】设置中文 最新最详细
  • C++学习路线(二十四)
  • MySQL-存储过程/函数/触发器
  • 前端页面样式没效果?没应用上?
  • 05.MyISAM主键和二级索引树
  • Mac apache配置cgi环境-修改httpd.conf文件、启动apache
  • 多厂商的实现不同vlan间通信
  • sh与bash的区别
  • D48【python 接口自动化学习】- python基础之类
  • PostgreSQL(WINDOWS)下载、安装、简单使用
  • Git的初次使用
  • rocketmq服务的docker启动和配置
  • BLE和经典蓝牙相比,有什么优缺点
  • ECharts图表图例知识点小结
  • LabVIEW非接触式模态参数识别系统开发
  • 厨艺爱好者的在线家园:基于Spring Boot的实现
  • PostgreSQL使用clickhouse_fdw访问ClickHouse
  • docker 单节点arm架构服务器安装zookeeper、kafka并测试通信