嵌入式学习——1——C基础——4

本文详细介绍了计算机编程中的常量(包括整数、小数、字符、字符串和地址),变量的概念、存储类型(如auto、static、extern、const和register)、数据类型、变量命名规则,以及运算符优先级。此外,还涵盖了流程控制语句,如选择结构(if-else,switch)、循环结构(while,do-while,for)和基本的控制流操作(break,continue,goto)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、常量

1> 在计算机中不可被修改的值,我们称之为常量,常量存放在进程的全局区的 .ro 段

2> 常量分为:整数常量、小数常量、字符常量、字符串常量、地址常量

整数常量(4字节):不可更改的整数值,默认是int类型,例如 1314  520 666。。。
小数常量(8字节):不能更改的小数值,默认是double类型,例如 3.14   12.5678  。。。
字符常量(1字节):由单引号括起来的一个字符,可以包含转义字符;'a' '3' '\n' '\t' '\012' 。。。
字符串常量(不固定):由双引号括起来的0个或多个字符,并且以'\0'作为结束标识; ""  "hqyj"  "    "  
地址常量:不可更改的地址值;NULL    数组名。。。

3> 可以使用预处理指令定义出宏标识常量,注意,所有的宏都是常量

#define PI 3.14

#undef  PI      // 取消define

#define PI 1234 // 重新定义

二、变量

1、为了实现泛型编程,试图将程序的功能提取出来,而不是非常依赖具体的某些数据。

2、在程序执行过程中,可以被更改的量称为变量

3、变量的本质:数据存储在内存空间中,标识内存空间的量我们使用的是指针,但是,比较难记,为了方便起见,给内存空间起的别名

变量的定义格式:存储类型 数据类型 变量名;

1、存储类型:常用的存储类型有五种
        auto:自动类型,也是默认类型,在栈区申请,随着所在函数结束空间自动释放
        static:静态类型,在全局区(静态区)申请,不会随着所在的函数结束而释放,会随着整个程序的结束而结束
        extern:外部变量,可以访问其他文件中的全局变量(非静态全局变量),可以在局部使用全局变量
        const:给变量增加常属性,不能通过该变量进行内存空间值的更改
        register:寄存器变量,存储在cpu的寄存器中,而且不能取地址运算,能够提高运算效率(底层接触)
        volatile:防止内存优化的,例如在多线程编程中,一个线程将全局变量的值改变了,另一个线程正常会跟着改变,加了该关键字后,可以防止优化(底层接触)

2、数据类型:之前提的数据类型部分,可以是基本数据类型,也可以是构造数据类型、指针类型、空类型

3、变量名:要遵循标识符的命名规则
    命名规则:
        (1)、只能由字母、数字、下划线组成
        (2)、不能由数字开头
        (3)、不能使用关键字:系统已经保留的具体特殊意义的单词,全部都是些小写
        (4)、严格区分大小写;例如apple和Apple是两个不同的标识符
        (5)、最好做到见名知意:大驼峰命名(组成标识符的每个单词首字母都大写:MyName)和小驼峰命名(第一个单词全部小写,其余每个单词首字母大写:myName)

    关键字:
    1. auto 2. break 3. case 4. char 5. const 6. continue 7. default 8.do
    9. double 10. else 11. enum 12. extern 13. float 14. for 15. goto 16. if
    17. int 18. long 19. register 20. return 21. short 22. signed 23. sizeof 24. static
    25. struct 26. switch 27. typedef 28. union 29. unsigned 30. void 31. volatile 32. while

变量的使用(初始化和赋值的区别)

1、初始化:定义变量的同时顺便给初始值
            int num = 520;
2、赋值:对变量重新更改内存中的数据
            int num;        //定义变量
            num = 520;      //赋值

三、运算符优先级

四、小练习

将一个数字,翻转:1234567 => 7654321
int main(int argc, const char *argv[])
{
	
	int num = 1234567;
	int newvalue = 0;
	do {
		newvalue = newvalue *10 + num%10;
		num = num/10;
	} while(num != 0);

	printf("%d\n",newvalue);

	return 0;
}

五、流程控制语句

1、三大控制结构

顺序结构:程序自上而下运行

选择结构:根据条件判断实现的选择

循环结构:重复的执行同一块代码,则选用循环结构

1.1选择结构

1.单分支选择结构

if(表达式)
    {
        C语句;    
    }

2.双分支选择结构

 if(表达式)
    {
        C语句1;    
    }
    else
    {
        C语句2;    
    }

3.多分支选择结构

if(表达式1)
    {
        C语句1;    
    }
    else if(表达式2)
    {
        C语句2;    
    }
    else if(表达式3)
    {
        C语句3;    
    }
    ...
    else
    {
        C语句n;    
    }

4.switch

 switch(表达式)
    {
        case 常量表达式1:C语句1;break;    
        case 常量表达式2:C语句2;break; 
        case 常量表达式3:C语句3;break; 
        ...
        default:C语句n;break;
    }

1.2循环结构

while(表达式2)
    {
        循环体;
        表达式3;    
    }
do
    {
          循环体;
          表达式3;  
    }while(表达式2);
 for(表达式1;表达式2;表达式3)
    {
        循环体    
    }
goto 标识符;
    标识符:
1.标识符:满足命名规范即可
i.break
break: 退出 中断
使用场景:所有循环(for\while\do..while),switch
功能:退出一层循环
注意:break不可以单独使用在if语句中

ii.continue
continue:继续
使用场景:所有循环(while\do..while\for)
功能:退出本次循环,进入下次循环

iii.goto
无条件跳转语句

iv.return
return: 返回  结束函数
格式:
return  表达式;
return(表达式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值