目录
一、操作符(接上篇文章未讲完的操作符)
6、关系操作符
> | >= | < | <= | != | == |
大于 | 大等于 | 小于 | 小等于 | 不等于 | 等于 |
注:不是所有关系都可以用这些操作符比较的。
7、逻辑操作符
&& | || |
逻辑与(并且) | 逻辑或(或者) |
&&这个操作符:两个操作数都为真,才为真,只要有一个为假,则为假。
||这个操作符:两个操作数只要有一个为真,则为真,两个同时为假,才为假。
8、条件操作符
exp1 ? exp2 : exp3(也叫三目操作符) |
若epx1为真,则exp2执行,exp3不执行。
若epx1为假,则exp2不执行,exp3执行。
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
(a>b) ? m = a : m = b;
/*if(a>b)
m = a;
else
m = b;*/ //表达相同,可以通过这个理解上面内容
printf("%d",m);
return 0;
}
9、逗号表达式
exp1,exp2,exp3,...expN |
逗号表达式,是从左向右依次计算的,逗号表达式的结果是最后一个表达式的结果。 |
#include<stdio.h>
int main()
{
int a = 3;
int b = 2;
int c = 5;
int d = (a+=3, b=5, c=a+b, c-4);
//a=6 b=5 c=11 7
printf("%d\n",d);
return 0;
}
10、下标引用,函数调用和结构成员
下标引用 | 函数调用 | 结构成员 |
[] | () | . -> |
二、常见关键字
auto | break | case | char | const | continue |
default | do | double | else | enum | extern |
float | for | goto | if | int | long |
register | return | short | signed | sizeof | static |
struct | switch | typedef | union | unsigned | void |
volatile | while |
注:用户自己不能创建关键字。
auto 自动 extern 声明外部符号 register 寄存器 struct也是用来修饰变量的
循环:break continue do while for while
分支:break switch case default(默认) if else goto
数据类型:char double float int long short void
修饰类型:const signed(有符号的) unsigned(无符号的) typedef(类型重定义)
自定义类型:enum(枚举类型) struct(结构体类型) union(联合体类型)
函数的返回: return(返回值)
计算机变量/类型 大小的 单位是字节:sizeof
void ---函数的返回值、函数的参数、修饰指针
1、关键字typedef
typedef unsigned int u_int;
int main()
{
unsigned int num = 0;
u_int num2 = 0;
return 0;
}
2、关键字static
作用:1、修饰局部变量 称为静态局部变量。
2、修饰全局变量 称为静态全局变量。
3、修饰函数 称为静态函数。
接下来举个例子证明:
#include<stdio.h>
void test()
{
int a = 5;
a++;
printf("%d", a);
}
int main()
{
int i = 0;
while(i<10)
{
test();
i++;
}
return 0;
}
此时打印出来的结果为:6 6 6 6 6 6 6 6 6 6,主函数执行到text()时,执行上面那个void test(),执行完后继续从text后面执行,又因为a为局部变量进函数创建出函数后销毁。
#include<stdio.h>
void test()
{
static int a = 5;
a++;
printf("%d", a);
}
int main()
{
int i = 0;
while(i<10)
{
test();
i++;
}
return 0;
}
此时打印出来的结果为:6 7 8 9 10 11 12 13 14 15。static修饰局部变量的时候,本来一个局部变量是存放在栈区的,被static修饰后,就储存到了静态区,static修饰局部变量改变了局部变量的存储类型(位置),使得这个静态变量的生命周期延长了,直到程序结束才结束。
注:虽然生命周期变长了,但是作用域不变。
拓展知识:C,C++代码学习的时候,我们把内存大概分为3个区域:堆区、栈区、静态区。
注:静态区变量的特点:创建好后,直到程序结束才会销毁(还给操作系统) 。
全局变量具有外部链接属性。
static修饰全局变量时候,会改变这个全局变量的链接属性,由外部链接属性变成内部链接属性,此时在同一程序的其他源文件就不能再使用这个变量了,作用域变小了。
3、关键字#define定义常量和宏
定义常量
#define M 100
int main()
{
int arr[M] = {0};
int m = M;
return 0;
}
宏
#define ADD(x, y) ((x)+(y))
int main()
{
int a = 10;
int b = 20;
int c = ADD(a, b);
printf("%d",c);
return 0; //打印的结果是30
}
宏很像函数
三、结构体
C语言引入了结构体来描述复杂对象。
举个例子
struct Book
{
char name[20];
char author[10];
float prict;
}
int main()
{
struct Book b = {"《知识》","xu","66.6f"};
printf("%s %s %f\n",b.name, b.author, b.prict);
return 0;
}
好了,今天的内容就到这边了,关于结构体的内容,下篇文章会和指针一起讲。求个三连!