常量
字面常量
常量分为:字面常量,#defing定义的标识符常量,由const修饰的常变量,和枚举变量。
平时生活中的1,2,9,1000,圆周率等,这些补课修改的量就是字面常量。
由#define定义得到的
#include <stdio.h>
#define NUMBER 5
int main()
{
printf("%d", NUMBER);
return 0;
}
在上面的代码中,NUMBER就是被#define定义的常量,此时用printf函数打印NUMBER的值就能看到,打印出来的是5.在用#define定义常量时,常量名一般全是大写字母,且放在头文件之后。
由const修饰得到的常变量
#include <stdio.h>
int main()
{
const int x = 5;
printf("%d", x);
return 0;
}
在上面代码中,x被const修饰,具有了常属性,但本质上还是一个变量,只是不能被修改。如x=10;这句语句是错误的,x不能再次赋值。但要记住x本质上还是一个变量。可以理解为x是变量但被const锁定了,无法修改。关于由const修饰的常变量本质上还是变量可以通过数组来判断。在定义数组时,数组[]内一定要放常量,而在定义数组时,如果将由const修饰的x放在方括号内,编译器会报错,由此可以的得出,由const定义的常变量,本质上还是常量。
枚举变量
#include <stdio.h>
enum animal { dog, pig, cat };
int main()
{
printf("%d", dog);
return 0;
}
代码中dog,cat,pig就是枚举变量,animal是枚举名。如果打印dog的值,会看到在屏幕上打印出0。应为我们没有给dog,cat,pig,赋值,所以会自动将第一个枚举变量赋值为0,然后依次增加,pig就被赋值为2,cat就被赋值为3。我们也可以对其中的枚举变量,任意赋值。
{ dog = 3, pig = 2, cat = 7 }这样就给他们赋值好了。{ dog, elephant, pig = 6, cat }这样赋值时,dog为0,elephant为1,cat为7。
字符串
"hello word!!!"这种由双引号引起的一串字符被称为字符串。
#include <stdio.h>
int main()
{
char arr1[] = "word";
char arr2[] = { 'w','o','r','d' };
char arr3[] = { 'w','o','r','d','\0' };
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
程序运行结果如下
至于为什么会出现这种结果,就要了解字符串的结束标志。字符串的结束标志为'\0'。在arr1中看似没有\0,但其实是被隐藏起来了。如果用sizeof计算arr1的大小就会得到5,word只有4个字符,那第五个就是被隐藏起来的\0。只有读取到\0,printf才会停止打印,arr2没有\0,所以读取完word后,会在内存中继续读取,知道读取到\0。用strlen函数可以计算字符串长度(strlen(arr1)),在计算字符串长度时,也是读取到\0,为结束标志。计算结果是不算\0的。
转义字符
转义字符顾名思义就是转变原来的意识。最早接触到的转移字符就是\n,\n的作用就是换行,像刚刚提到的\0也是一个转义字符。每种转义字符都有不同的作用,来看些其他转移字符
\' | 用于打印 ' |
\" | 用于打印 " |
\a | 会使电脑发出蜂鸣 |
\ddd | ddd表示1到3个八进制数 |
\xdd | dd表示两个十六进制数 |
printf("%s",''');这个写法是错误的,想要打印 ' ,因该写成printf("%s",'\'');。那么打印 " 也是同理。
每一个字符都可以在ASCII表中找到,在表中每一个字符都有一个自己的编号。
#include <stdio.h>
int main()
{
printf("%c\n",'\60');
printf("%c\n", '\x30');
return 0;
}
可以看到八进制的60和十六进制的30在ASCII表中对应的是字符'0'。
if语句
在生活中我们会有很多选择,在程序中也一样。如输入一个学生的分数,如果大于60,则输出及格,否则就输出不及格。
#include <stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
if (x >= 60)
{
printf("及格\n");
}
else
{
printf("不及格\n");
}
return 0;
}
可以通过上面的代码看到if的用法。if后面怎么执行就看if后面的括号内的判断是否为真,为真就执行if后的{}内的程序,为假就执行else{}内的程序。这就是简单的选择语句
while语句
同样在生活中我们每天也都会重复做一些事,例如学习,睡觉。程序中实现循环的语句有while语句。
#include <stdio.h>
int main ()
{
int n = 0;
while (n < 100)
{
n=n+1;
}
printf("%d", n);
return 0;
}
在上面程序中当n小于100时,n会重复进行n+1,直到n不小于100。{}内的语句被称为循环体,当while后面的()内判断为真时,就会一直循环,直到()内判断为假。