(以下为昨天内容的补充,是个人学完之后觉得有所遗漏的,会有分割线!)
C语言的代码是由一条一条的语句构成的,可分为以下五类
1.空语句
2.表达式语句
3.函数调用语句
4.复合语句
5.控制语句
空语句最为简单,一个分号就是一条语句,是空语句。
#include <stdio.h>
int main()
{
;//空语句
return 0;
}
然后是表达式语句,也就是在表达式的后面加上分号;
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5;//表达式语句
return 0;
}
接着是函数调用语句;
#include <stdio.h>
int main()
{
printf("hehe\n");//这就是最简单的函数调用语句
return 0;
}
然后是复合语句(里面的代码其实也是一知半解,只是懂了复合语句的概念)
#include <stdio.h>
void print(int arr[], int sz)//函数的大括号中的代码也构成复合语句
{
int i = 0;
for(i=0; i<sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int i = 0;
int arr[10]={0};
for(i=0; i<10;i++)//for循环=的循环体的大括号中的也是复合语句
{
arr[i] = 10-i;
printf("%d\n",arr[i]);
}
return 0;
}
最后是控制语句,用来控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构: 顺序结构、选择结构、 循环结构),他们有特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
1.条件判断语句也叫分支语句:if语句、switch语句;
2.循环执行语句:do while语句、 while语句、for语句:
3.转向语句: break语句、goto语句、continue语句、return语句。
第一种是/**/的形式
将注释放在/*? ? */之间,内部可以分行。
/*
这是一行注释
*/
可以插在行内
int fopen(char* s /* file name */, int mode);
上面的示例中,/* file name */用来对函数的参数进行说明;在语言的运行当中会被视为一个空格
/**/的这个注释不支持嵌套注释,/*开始后,只要遇到第一个*/,就认为结束注释了
第二种是// 的形式
将注释放在//的后面
-------------------------------------------------------------------------------------------------------
以下为今天新学的内容
------------------
1.1字符
char
[signed] char
[unsigned] char
1.2整型
//短整型
short [int]
[signed] short [int]
unsigned short [int]
//整型
int
[signed] int
unsigned int
//长整型
long int
[signed] long [int]
unsigned long [int]
//更长的整型
long long [int]
[signed] long long [int]
unsigned long long [int]
1.3浮点型
float
double
long louble
1.4布尔类型
用整数0表示假,非零数表示真。
布尔类型使用得调用头文件<stdbool.h>
布尔类型变量的取值是:true或者false
#include <stdbool.h>
_Bool flag = true;
if(flag)
printf("i like c\n");
C语言使用signed和unsigned关键字修饰字符型和整数类型的。
signed关键字,表示一个类型带有正负号,包含负值;
unsigned关键字,表示该类型不带有正负号,只能表示零和正整数。
对于int类型,默认是带有正负号的,所以int等同于signed int
由于这是默认情况,所以signed一般都省略不写
#define SHRT_MIN (-32768) //有符号16位整型的最?值
#define SHRT_MAX 32767 //有符号16位整型的最?值
#define USHRT_MAX 0xffff //?符号16位整型的最?值
#define INT_MIN (-2147483647 - 1) //有符号整型的最?值
#define INT_MAX 2147483647 //有符号整型的最?值
unsigned int 里面的int 可以省略,并且字符类型char也可以设置signed和unsigned形式
data_type mame;
| | |
| | |
数据类型 变量名
int age;//整型变量
double weight;//浮点型变量
char ch; //字符变量
变量在创建时就给一个初始值,就叫初始化。
变量有全局变量和局部变量
+、-、*这些过于简单,不写了直接讲? /? ?和? ? ?%
除法两端如果都是整数,执行的是整数除法,得到的结果也是整数。
#include <stdio.h>
int main ()
{
float x = 6 / 4;
int y = 6/4;
printf("%f\n", x);//输出1.000000
printf("%d\n", y);//输出1
return0;
}
在上面示例中,尽管x的类型是浮点数,但是6/4 得到的结果是1.0而不是1.5.原因就是c的整数除法是整除,只会返回整数部分,丢失小数部分。
如果希望得到浮点是的结果,两个运算数就中至少有一个浮点数,这时才会进行浮点数整除法。
#include <stdio.h>
int main()
{
float x = 6.0/ 4;//或者写成6 / 4.0
printf("%f\n", x);//输出1.500000
return 0;
}
%表示求余,即返回两个整数相除的余值,只适用于整数
结果的正负号只看第一个运算数,即被除数的正负号来决定
略
前面的都是双目操作符,要有两个运算数
++是一种自增的操作符,分为前置++和后置++,--是一种自减的操作符,也分为前置和后置
int a =10;
int b = ++a;//++的操作数是a,是放在a前面的,就是前置
printf("a=%d b=%d\n",a ,b)
计算口诀是 先+1, 后使用;
a原来是10.先+1,然后变成11赋值给b
相当于
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);
后置++
计算口诀是先使用,后+1
a原来是10,先使用就是先赋值给b,然后a再+1
结果为b=10,a=11
相当于
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);
前置--和后置--原理相同,略
int a =3.14;
//a的是整型而3.14是浮点型。两边类型不一样会报错
要消除警告就要强制类型转换:
int a =(int)3.14;
这个留给后续补充,有点多
---------------------------------------------------------