昨天偷懒,没有更新,反正是学习笔记,并不是入门教程,教程的话老老实实找菜鸟教程就行
目录
存储类、运算符、判断、循环
一、存储类
存储类分为四个:auto、register、static、extern
auto:auto存储类是所有局部变量默认的存储类
register:表示将数据寄存在寄存器内,这个关键字并不意味着数据真正在寄存器内寄存,具体数据在什么位置和硬件实现有关(反正我也不知道)。
static:只会进行一次初始化,只在指定函数或者指定文件有效
extern:提供对于所有程序文件都可见的变量(实际上用法相当于将其他文件的变量或者方法引入过来)
※static存储类的实验:
#include<stdio.h>
void func1(void);
static int count = 10;
int main()
{
while(count--) {
func1();
}
return 0;
}
void func1() {
static int i = 0;
i ++;
printf("count = %d, i = %d\n", count, i);
}
输出结果
其中count的作用域是在本文件有效,而i的作用域是func1;两者都仅会初始化一次
※extern存储类的实验:
Extern.c代码:
#include<stdio.h>
int count;
extern void method(void);
int main()
{
count = 10;
method();
return 0;
}
support.c代码:
#include<stdio.h>
extern int count;
void method(void)
{
printf("count = %d", count);
}
执行结果:
可以看出,我们在文件Extern.c中成功引入了方法method,而在文件support.c中成功引入了count全局变量
※register存储类实验:
#include<stdio.h>
#include<time.h>
#define TIME 900000000 //注意:这个数字最好是大一点
int m, n = TIME;
int main()
{
time_t start, stop;
register int a, b = TIME;
int x, y = TIME;
time(&start);
for(a = 0 ; a < b ; a++);
time(&stop);
printf("%d \n", stop - start);
time(&start);
for(x = 0 ; x < y ; x ++);
time(&stop);
printf("%d \n", stop - start);
time(&start);
for(m = 0 ; m < n ; m ++);
time(&stop);
printf("%d \n", stop - start);
return 0;
}
执行结果:
我们可以看出,register作用域执行循环的时间要远远小于另外两个(register直接是0秒,而另外两个是3和2),如果开始的TIME定义的非常小的话,将会导致如下结果:三个输出都是0
二、运算符
学习了java之后,我对于运算符真的是,,,像见到亲人一样2333
C语言内置了众多的运算符,包括,算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和杂项运算符
算术运算符:
+、-、*、/、%、++、--
关系运算符:
==、!=、<、>、>=、<=
逻辑运算符:
&&、||、!
位运算符:
&、|、^、~、<<、>>
赋值运算符:
=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=
杂项运算符:
sizeof、&、*、?:
※实际上重点不是运算符,而是位运算符的骚操作
※利用异或交换两个数字的值:
int a = 25;
int b = 26;
a = a ^ b; //a是两个数的不同信息
b = a ^ b; //b和a的不同信息 ^ b = a,现在b的值就是a了
a = a ^ b; //b和a的不同信息 ^ a = b,因为表达式中的b是a,所以直接换成a。
※利用与运算判断一个数是否是2的整数次幂
int num = 4;
bool flag = (num > 0) && (num & (num - 1) == 0);
就酱紫
※取余原则
1.取余的结果可能是正数或者负数,由第一个操作数来决定
2.取余的双方都只能是整数,如果不是整数,编译器将报错
运算法则:(int 和 long)
如果整数类型值正整数,左边补0
如果是负数,左边补1
如果是无符号数,补0
三、判断
判断的写法一共也就几种,if、if-else、switch这三种语句
if(1 == 1) {
return 0;
}
if(1 == 2) {
return 0;
} else {
return 1;
}
int i = 10;
switch(i) {
case 1:
return 1;
break;
case 2:
return 2;
break;
default :
return 0;
}
emm,就这样
四、循环
循环的写法也就是几种,while、for、do-while,没有什么好记的。