C语言笔记7

cpp 复制代码
#include <stdio.h>
int main(void) 
{
    int a=123;
    int b=052;//十进制42
    int c=0xa2;//十进制162
    printf("a=%d  b=%o  c=%x  \n",a,b,c);//分别是十进制  八进制   十六进制
    printf("a=%d  b=%d  c=%d  \n",a,b,c);
    printf("Hello 凌迟老头\n");
    return 0;
}
//结论:变量在内存存储的数值是固定的  可以以多种形式(八进制  二进制   十进制   十六进制等)输出

运行结果:

float能保证有7位有效数字

double能保证有15位有效数字

volatile是防止编译器优化代码

比如:volatile int a=100;

register 建议将变量定义在寄存器(经常使用到的变量)(属于建议 不是命令)

当CPU内部有空闲的寄存器就生效,如果没有空闲寄存器就无效(就继续放内存)

字符串长度=字符串+结束符\0

结束符代表结束标志

所以字符常量的长度是1字节(单引号),但是字符串的常量就是2字节(双引号)

因为字符所对应的最大ASCII值是127,所以使用char类型就可以存下所有的字符

cpp 复制代码
int main()
{
	char ch1;
	scanf("%c",&ch1);
	printf("ch1=%c\n",ch1);
}

switch()括号里面的判断条件必须是整数

switch()里面的break是跳出switch语句(没有跳出就依次执行)

switch()里面的default(可有可无)是跳过一条语句

if语句里面的判断条件就可以是任意值

算数运算符是加减乘除

二个数相除,如果要得到小数,必须有一个是double或者float类型

或者手动的将2个数中的某一个数改成单精度实数

eg: int f=3.0/2;

另外:除数不能为0,除数为0的话,会报错

cpp 复制代码
int main()
{
	int num=8627;
	int a=num % 10;//个位
	int b=num/10%10;
	int c=num/100%10;
	int d=num/1000%10;
	printf("%d\n",a);
	printf("%d\n",b);
	printf("%d\n",c);
	printf("%d\n",d);
}

自加自减都是进行单独的加1或者减1

数字在前,先使用,再自加

加减号在前,先自加,再使用

赋值运算符=

比较运算符就是> < >= <= != == 结果只有2种分别是0和1

逻辑运算符 &&乘 ||加 !取反

逗号运算符。最终的结果是最后一个表达式的结果

cpp 复制代码
int main()
{
	int a=3;
	double b=(double)a;//隐式转换
	//类型的准换   所需要的类型和所给的类型不匹配
	//强制转换   (需要转换的类型)原来的数据类型
	printf("%d\n",a);
	printf("%lf\n",b);
	printf("%d\n",(int)(19.1415926));
	
}

强制转换的好处是数据不丢失

但是注意转的顺序和大小

需要注意的是最好从低精度往高精度转(int--->float---->double)

因为高精度往低精度转会损失部分数据,降低了数据的精度

if()语句后面不用加;(因为;是一个空语句)

if后面的语句如果是复合语句建议在后面加花括号形成一个复合语句

if else语句的结构有2种,但是结果互斥

if 语句1 else 语句2 //只有2种结果

if else if //有很多种结果,只是不确定是哪一种结果

if else if 和switch语句等同,只是判断的条件不同

在switch里面加break和default的作用

三目运算符

判断 表达式,如果为真,结果为表达式2的值,如果为假则为表达式3的值

cpp 复制代码
int main()
{
	int a=1;
	int sum=0;
	while(a<=100)//后面无分号
//如果加了分号,程序也没错,但是一直在执行空语句,很消耗内存
	{
	sum=sum+a;
	a++;
	}
	printf("%d\n",sum);	
}

while是先判断再决定是否执行,最坏的结果就是一次都不执行,需要注意的是while后面不加分号

do while是先执行,再判断,最坏的结果就是至少执行一次,需要注意的是while后面要加分号

cpp 复制代码
int main()
{
	int a=1;
	int sum=0;
	do
	{
	sum=sum+a;
	a++;
	}
	while(a<=100);//需要加分号
	printf("%d\n",sum);	
}

视情况来决定选用哪一种判断

相关推荐
这料鬼有毒8 分钟前
二刷hot100-1143.最长公共子序列
算法·leetcode·动态规划
泡泡鱼(敲代码中)35 分钟前
MySQL 学习笔记:DCL、函数与约束 —— 安全、效率、完整性的三板斧
开发语言·笔记·sql·学习·mysql·gitee
政企项目老覃1 小时前
边缘 AI 推理部署:安防零售场景下的模型裁剪与端侧落地实践
人工智能·程序人生·算法·性能优化·vllm
Logic1012 小时前
C语言/数据结构贪心算法题解:买卖股票的最佳时机——一次交易最大利润(O(n)时间O(1)空间)
c语言·数据结构·贪心算法·数组·时间复杂度·算法题·股票交易
商业白皮书2 小时前
AI 创业公司同步布局欧美与亚太市场,推荐选择哪些支持多区域部署的云平台?
笔记
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
GreenTea3 小时前
发布 3 天登顶 HN:不生成一个字的模型 Jev,我把它的源码和黑料都扒了一遍
前端·后端·算法
庖丁解牛3 小时前
无穷小不是一个“神秘小数”,而是一场奔向 0 的过程
算法
kaixin_啊啊3 小时前
中国研究生数学建模竞赛(华为杯)学习笔记——AI绘图方法
人工智能·笔记·学习·数学建模
ZPC82104 小时前
YOLO26 识别串番茄果梗
人工智能·深度学习·算法·机器学习