初识c语言02

初识c语言02,第1张

初识c语言02

目录

6选择语句

7循环语句

8函数

9数组

10 *** 作

算术 *** 作符

移位 *** 作符

移位 *** 作符

位 *** 作符

赋值 *** 作符

单目 *** 作符

逻辑 *** 作符

关系 *** 作符

逻辑 *** 作符

条件 *** 作符

逗号表达式

下标引用、函数调用和结构成员

11常见关键字


6选择语句
 

if
switch

#include 

int main()

{

       int coding = 0;

       printf("你会去敲代码吗?(选择1 or 0):>");

       scanf("%d", &coding);

       if (coding == 1)

       {

               printf("坚持,你会有好offern");

       }

       else

       {

               printf("放弃,回家卖红薯n");

       }

       return 0;

}

7循环语句

有些事情必须日复一日的去做
终身学习
有效代码2w行! 注意是有效代码
while
for
do while

int main()

{

       printf("加入比特n");

       int line = 0;

       while (line <= 20000)

       {

               line++;

               printf("我要继续努力敲代码n");

               //printf("%dn", line);

       }

       if (line > 20000)

               printf("恭喜你找到好offern");

       else

       {

               printf("火候还不够n");

       }

       return 0;

}

8函数

main函数-主函数
什么是函数呢
f(x)=cx+b
f(x,y) =x+y

c语言中,把一些独立的功能封装成一个函数

int main()

{

       int num1 = 0;

       int num2 = 0;

       int sum = 0;

       printf("输入两个 *** 作数:>");

       scanf("%d %d", &num1, &num2);

       sum = num1 + num2;

       printf("sum = %dn", sum);

       return 0;

}

int Add(int x, int y) 

{

       int z = x + y;

       return z;

}

int main()

{

       int num1 = 0;

       int num2 = 0;

       int sum = 0;

       printf("输入两个 *** 作数:>");

       scanf("%d %d", &num1, &num2);

       //scanf 中格式串怎么写的,就必须怎么输入

       sum = Add(num1, num2);

       printf("sum = %dn", sum);

       return 0;

}

把函数想象成一个工厂
原材料-->工厂(加工)-->产品
输入参数-函数运算-返回结果
num1,num2--Add--sum
返回类型,函数名,函数的形式参数,函数体
如果函数定义在main后面,需要在main前声明

9数组

一组相同类型元素的集合
int a=1;
int b=2;
int c=3;
...
存1-1000呢?

int main()

{

       int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义一个整形数组,最多放10个元素

       //存字符 - 字符数组

       char ch1[3] = { 'a','b','c' };

       char ch2[6] = "hello";

       //hello 后面还有一个''

       //最好初始化

       int arr1[10];

       printf("%dn", arr1[0]);

       //vs2019 数组未初始化 不会报错

       

       //不完全初始化

       //int arr[10] ={ 0 };

       return 0;

}

数组下标从0开始,c标准规定
通过下标定位数组元素

int main()

{

       int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

       int i = 0;

       while (i<=9)

       {

               printf("%d ", arr[i]);

               i++;

       }

       return 0;

}

10 *** 作符 算术 *** 作符
      • / %
        % *** 作符只能作用于整数
        %取模(取余) *** 作符
        7%2 商3余1
int main()

{

       //int n = 7.0 % 2;  //非法了

       //%只能作用于整型

       return 0;

}

7.0/2
/两端只要有小数,就是执行浮点数除法

移位 *** 作符

int a = 3;
3的二进制位
00000000000000000000000000000011
32 位

移位 *** 作符
>> <<

左移把二进制位向左移动,有×2的效果

位 *** 作符

这里的位也是指的二进制位

&

按位与
对应二进制位同时为1才是1,只要有0就是0

^

按位异或
对应二进制位相同为0,不同为1

int main()

{

       int a = 3;

       int b = 5;

       int c = a ^ b;

       //c:   00000000000000000000000000000110

       printf("%dn", c);

       return 0;

}

|

按位或
对应二进制位有1则为1,全0才是0

int main()

{

       int a = 3;

       int b = 5;

       int c = a & b;

       //3:

       //00000000000000000000000000000011

       //00000000000000000000000000000101

       //00000000000000000000000000000001

       //同时为1才是1,只要有0就是0

       printf("%dn", c);

       return 0;

}

赋值 *** 作符

= += -= *= /= &= ^=  |=    >>=   <<=

+= 复合赋值符
复合赋值符写起来更方便
再懒一点 直接写a++

单目 *** 作符

+是双目 *** 作符 有2个 *** 作数 a+b
单目 *** 作符 只有一个 *** 作数

!

逻辑反 *** 作

int main()

{

       int c = 10;

       printf("%dn", !c);  //0

       return 0;

}

c语言中0表示假,非0表示真
运算符就是 *** 作符,英文翻译结果不一样而已

+

-

&

取地址符号

sizeof

sizeof是一个 *** 作符,不是函数!!!
用来计算变量大小
int a=10;在内存中创建了一个a变量
sizeof(a) 结果为4
计算的是变量或者类型所创建变量占据内存的大小--单位是字节

int main()

{

       int a = 10;

       printf("%dn", sizeof(a));//4

       printf("%dn", sizeof(int));//4

       //计算的是变量或者类型所创建变量占据内存的大小--单位是字节

       printf("%dn", sizeof(10));//4

       //3+4 的结果是7 类型是int

       return 0;

}

~

按2进制位取反
对存在内存中的补码进行取反

int main()

{

       int a = -1;

       //-1是负整数

       //负整数的二进制有原码,反码,补码

       //内存中存储的是二进制的补码

       //10000000000000000000000000000001   -原码

       //11111111111111111111111111111110   -反码

       //11111111111111111111111111111111   -补码

       //00000000000000000000000000000000   -取反

       int b = ~a;

       printf("%dn", b);

       return 0;

}

++/--

++a 前置++先++后使用

//int main()

//{

//     int a = 10;

//     int b = ++a;

//     printf("%dn", b);

//     printf("%dn", a);

//     

//     return 0;

//}

int main()

{

       int a = 10;

       int b = a++;

       //后置++ 先使用 后++

       printf("%dn", b);

       printf("%dn", a);



       return 0;

}

对于自定义类型,前置++效率更高

int main()

{

       int a = 10;

       int b = a--;

       //先使用后--

       printf("%dn", b);//10

       printf("%dn", a);//9



       return 0;

}

*

解引用 *** 作符/间接访问 *** 作符

(类型)

强制类型转换

int main()

{

       int n = 3.14;

       printf("%dn", n);



       return 0;

}

warning 从double转换到int 可能丢失数据
使用强制类型转换即可

int main()

{

       int n =(int) 3.14;

       printf("%dn", n);



       return 0;

}

逻辑 *** 作符
int main()

{

       int a = 3;

       int b = 5;

       if ((a == 3) || (b == 3))

       {

               printf("hehen");

       }

       return 0;

}

关系 *** 作符
>
>=
<
<=
!=
==
逻辑 *** 作符

&& 逻辑与
|| 逻辑或

条件 *** 作符

exp1 ? exp2 : exp3

//int main()
//{
//      //exp1 ? exp2 : exp3
//      //简化if语句
//      int a = 0;
//      int b = 0;
//      int max = 0;
//      scanf("%d %d", &a, &b);
//      if (a > b)
//              max = a;
//      else
//              max = b;
//      printf("max is %dn", max);
//      return 0;
//}


int main()
{
        //exp1 ? exp2 : exp3
        //简化if语句
        int a = 0;
        int b = 0;
        int max = 0;
        scanf("%d %d", &a, &b);
        max = a > b ? a : b;
        //三目 *** 作符
        printf("max is %dn", max);
        return 0;
}
逗号表达式
//int main()

//{

//     int a = 3;

//     int b = 5;

//     int c = 10;

//     //逗号表达式会从左向右依次计算,整个逗号表达式结果是最后一个表达式结果

//

//     int d = (a + 2, b = a - 3, c = b + 4);

//     printf("%dn", d);//b为0 0+4=4

//     printf("%dn", b);//**b的值发生了改变 0**

//

//     return 0;

//}

下标引用、函数调用和结构成员

arr[4]

[]下标引用 *** 作符
2个 *** 作数,一个是arr 一个是4 数组名和下标

()函数调用 *** 作符
Add(3,5);
函数在调用时,必须有() *** 作数是函数名Add,3,5
*** 作数不固定,可多可少

.
->

11常见关键字

auto-自动-定义自动变量,自动创建空间自动销毁
auto int a=0;
所有的局部变量本身都是auto

char
short
int
long
float
double

break-终止-用于循环中 while for do-while switch
continue-继续-用于循环,退出本次循环
case-swtich
default 默认
do
else
for
if
go to
while

const-常属性-修饰变量,修饰指针
extern-声明外部符号

register-寄存器关键字/建议性命令,不是强制的,需要cpu自己考虑是否使用


越往上,速度越快,空间越小,造价越高
高速缓存几十M
早期时,没有高速缓存什么的
cpu的处理速度和内存的读写速度差不多,后来cpu处理速度越来越快,但内存读写速度跟不上,就出现了高速缓存,寄存器
CPU-中央处理器
寄存器 eax ebx ecx edx esp ebp
注意! 寄存器变量不能取地址
return 返回,在函数中使用

signed-有符号的-修饰类型
unsigned-无符号的

void-无,空-函数返回类型,函数参数,修饰指针
volatile
c语言中可以自定义的类型:
enum-枚举
struct-结构体
union-联合体

sizeof
typedef-类型重定义

typedef unsigned int u_int;

int main()

{

       unsigned int num1 = 100;

       u_int num2 = 100;

       return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4752057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存