全面学习C语言【一】:变量、常量、表达式、判断、注释语法

🌹笔者的前言

照理来说 在正常的大学里 都是先教C这种基础语言再教Java之类的
甚至在大部分的本科院校的非计算机相关专业 也会教C语言 因为C语言的思维方式不仅在计算机中有用 在很多方面都会有所帮助
但我这奇葩学校直接教Java了 C压根没教…

So 没办法 只能自己学习了
在学习的过程中 总结一下学习笔记 以方便以后回顾

:由于笔者已经会Java了 C的一些概念和Java是相通的 因此部分变量函数之类的详细的基本概念就不在此阐述了
部分笔者已经会了的知识点和概念 或者部分C和Java重复的概念 比如运算符 也不在此阐述了

因此 若您是第一次接触编程语言 并且想学习C语言 建议移步别的博客
但若您已经了解了部分编程语言的基础知识(比如Java) 那么再阅读本文章 将会使您省去很多学习成本
在本文章中所提到的知识点基本都是C语言和Java的不同点


一、变量

🎈定义变量

格式:类型 变量名;

例如:

int name;

或 同时定义多个变量:

int price,count;

:在C99规范中 可以在任何地方定义变量 在需要使用到变量的时候立刻可以定义出来然后使用
但在ANSI C规范中 只能在代码开头的地方定义变量 初始化之后 才能在下面的代码中进行使用

🎈变量名的格式

变量名只能由字母 数字 下划线组成
数字不能为第一位
且C的保留字不能用于作为变量名

保留字:
在这里插入图片描述

🎈变量的赋值

格式:类型 变量名=初始值;

例如:

int age=0;

🎈变量的输入

🚩读整数

在C中 使用scanf()函数来读入用户的输入

语法:scanf("%d", &price);
要求scanf函数读取下一个输入的整数 然后将读入的结果赋值给名为price的变量

需要注意的是 在变量名的前面 须带有&

:在整数的时候才是%d 若为其它类型 则不一定是%d

可以同时读入多个整数

像这样:

scanf("%d %d",&a,&b);

🎈变量的输出

🚩整数

在C中 使用printf()函数来输出
语法:print("%d", number);

比如:

print("%d", 123);

:在整数的时候才是%d 若为其它类型 则不一定是%d

可以同时输出多个整数

像这样:

printf("%d + %d = %d",a,b,a+b);

🚩浮点数

两个整数的运算结果只能是整数
10和10.0在C中是完全不同的数

为了使运算的结果带有浮点数 有两种解决方法:
1、使常量变成浮点数
比如 5/2 变成 5.0/2
在C中 若有一方是浮点数 那么最终会将所有参与运算的变量都先变成浮点数再进行运算
2、在定义变量的时候 将变量的类型改为double(双精度浮点数)
当变量的类型为double的时候 在接收时就不能是%d了 而是应该改为%lf
同样 在输出的时候也不能为%d了 而是应该改为%f

二、常量

🎈常量的定义

在C中 使用const定义一个常量

const修饰符加在变量定义的前面 给该变量加上const(恒定的)属性
其意为 该变量的值一旦被初始化 即无法再修改了(已经定死了)

例如:

const int COUNT=100

在定义常量的时候 在被赋初始值之后 它就永远只能是这个值了

常量的命名通常为全部大写

在这里的100 这种像是魔术一样 不知道具体是什么的数 被称为魔法数(Magic Number)
因此 使用有意义的名称更容易使人理解

三、表达式

在表达式中 参与运算的数被称为算子 无论是变量还是常数 都是算子
用于计算的符号被称为运算符(没错 就跟数学里的运算符一个概念)

在C中 并没有幂的相应运算符 因此 若要求n次方 只能xx*x… 或者用循环来计算

🎈运算符

在C中 赋值也是运算 也有结果
比如 a=2的结果是a被赋予了值 该值为2

a=b=2 相当于是 a=(b=2)
这是因为 赋值运算符的顺序是自右向左

四、判断

🎈if判断

🚩C的if判断语法和Java的一样

if ()
{
	xxxx...
}

🚩C也有if…else

if ()
{
	xxxx...
}
else
{
	yyyy...
}

🚩省略花括号

if语句也可以没有花括号{}

比如:

if (a>b)
	printf("%d",123);

当没有大括号的时候 紧跟在if后面的那句语句将作为if成立后执行的语句

同样的 else也可以没有花括号

比如:

if (a>b)
	printf("success");
else
	printf("%d",404;

在省略了花括号之后 只有if或else的后面一句语句会生效
而有了花括号之后 可以执行一个语句块 即多行代码

🚩嵌套判断

在没有花括号的时候 else只能和最近的if进行匹配
比如:

if ( a == 6 )
    if ( b == 7 ) 
        printf("A");
else
    printf("B");

此时的缩进看起来像是else对应外面的if
然而实际上对应的依旧是里面的if 因为距离里面的if最近

因此 为便于理解 建议在if和else后面都跟上花括号{}

🚩级联判断

在C中 也是使用else if

if (a>0)
{
	printf("1");
}
else if (a==0)
{
	printf("2");
}
else
{
	printf("3");
}

🎈switch…case判断

switch只能判断整数型的结果
case后的常量可以为常数 也可以为常数计算的表达式

switch()
{
	case 1:
		printf("1");
		break;
	case 2:
		printf("2");
		break;
	default:
		printf("default");
		break;
}

switch语句可以看作是一种基于计算的跳转
当符号计算控制表达式的值后 程序会跳转到相匹配的case处
分支标号只是说明switch内部位置的路标 并不是对代码进行分割
当遇到break时 才会停止继续往下执行

五、注释

🎈单行注释

在C中 单行注释用双斜杠//表示

//是C99的注释 ANSI C不支持

🎈多行注释

多行注释格式:

/*    */

多行注释ANSI C也支持


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章