栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Linux下的C语言学习——第二节数据类型,运算符,输入输出

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux下的C语言学习——第二节数据类型,运算符,输入输出

终端快捷键

mkdir文件名,可以创建文件夹

cd 文件名,可以跳转到该目录下

cd .. 跳至上级目录  .当前目录  ~用户主目录   -上次目录

Vim * -p该目录下文件一块编辑

Cp  目录1/  目录2 -r 把目录1下的文件拷贝到目录2

touch 文件名 创建文本文件

gcc *.c编译全部.c文件

tab 补全

rmdir 目录/   删除目录

Ls -l查看文件的权限

vim快捷键

yy复制

p粘贴

gt多文件跳转

:wqa多文件全部退出

:n调转下一个页

:N跳转到上一个页

C语言数据类型

类型转换:隐式,默认精度高。Char+int =int

显式

不同形式的0值:0,‘0’,“0”,‘’

常量:整型,实型,字符(‘a’'15'转义字符),字符串(“axv”),标识(#define)

变量:【存储类型】 数据类型  标识符 = 值;

数据类型:基本数据类型/构造数据类型

【存储类型】auto:默认型,自动分配回收

    register 寄存器型,只是建议系统,只能局部变量,32位数据类型

    static:静态型,自动初始化为0或空值,其值有继承性

    extern:说明型,不能改变被说明变量的值和类型

声明周期:

局部变量和静态局部变量对比:局部变量

[tom@CentOS7 ~]$ vim auto.c

-----------------------------------------------

#include

#include

void func(void)

{

    int x = 0;//局部

    x = x + 1;

     printf("%p->%dn",&x,x);

}

int main()

{

    func();

    func();

    func();

}

------------------------------------------------------

[tom@CentOS7 ~]$ make auto

cc     auto.c   -o auto

[tom@CentOS7 ~]$ ./auto

0x7ffd69a83b7c->1

0x7ffd69a83b7c->1

0x7ffd69a83b7c->1

-------------------------------------------------------

静态局部变量,继承性

#include

#include

void func(void)

{

  static  int x = 0; //静态局部

    x = x + 1;

     printf("%p->%dn",&x,x);

}

int main()

{

    func();

    func();

    func();

}

------------------------------------------------------

[tom@CentOS7 ~]$ make auto

cc     auto.c   -o auto

[tom@CentOS7 ~]$ ./auto

0x601030->1

0x601030->2

0x601030->3

全局变量Vs局部变量:

int i = 100;

func(int i) 

{

    printf("[%s]i=%dn",__FUNCTION__,i);

}

int main()

{

    printf("[%s]i=%dn",__FUNCTION__,i);

    int i = 3;

    func (i);

    {

    printf("[%s]i=%dn",__FUNCTION__,i);

    }

}  

----------------------------------------------------------------

[tom@CentOS7 ~]$ make auto

cc     auto.c   -o auto

[tom@CentOS7 ~]$ ./auto

[main]i=100

[func]i=3

[main]i=3

[main]i=3

static修饰全局变量:方便项目合作时,每个人写的不同模块的全局变量因为重名而冲突,static全局变量只在本模块有效。

例子静态变量

[tom@CentOS7 ~]$ mkdir miniproj

[tom@CentOS7 ~]$ cd miniproj

[tom@CentOS7 miniproj]$ touch main.c proj.c proj.h

[tom@CentOS7 miniproj]$ vim main. proj.c proj.h

Main.c:

#include

#include

#include "proj.h"

static int i = 10;

int main(void)

{

    printf("[%s]i=%dn",__FUNCTION__,i);

    func();

    exit(0);

}

~                                                                     ~     

Proj.c:

#include

#include

#include "proj.h"

static int i =100;

void func (void)

{

    printf("[%s]:i=%dn",__FUNCTION__,i);

    exit(0);

}  

~                                                                    

~         

Proj.h:

#ifndef PROJ_H___

#define PROJ_H___

void func(void);

#endif                                                                    ~                

[tom@CentOS7 miniproj]$ gcc *.c

[tom@CentOS7 miniproj]$ ./a.out

[main]i=10

[func]:i=100

静态函数不能在头文件声明(因为静态static会限制函数的作用范围),若要调用先写一个主调函数并声明后,主调函数在被调之下。

Main.c:

#include

#include

#include "proj.h"

static int i = 10;

int main(void)

{

    printf("[%s]i=%dn",__FUNCTION__,i);

   Call_func();

    exit(0);

}

~ 

 

Proj.c:

#include "proj.h"

static int i =100;

static void func (void)

{

    printf("[%s]:i=%dn",__FUNCTION__,i);

    exit(0);

}

void Call_func(void)

{

        func();

}

Proj.h:

#ifndef PROJ_H___

#define PROJ_H___

void Call_func(void);

#endif

#include

#include

#include "proj.h"

static int i = 10;

int main(void)

{

    printf("[%s]i=%dn",__FUNCTION__,i);

   Call_func();

    exit(0);

}

~  

Extern 不是变量定义,是可扩展外部变量的作用域,不能改变其类型和值

[tom@CentOS7 ~]$ cp miniproj/ minproj_extern -r

[tom@CentOS7 ~]$ cd minproj_extern/

[tom@CentOS7 minproj_extern]$ vim * -p

还有 4 个文件等待编辑

Main:

#include

#include

#include "proj.h"

int i = 10;

int main(void)

{

    printf("[%s]i=%dn",__FUNCTION__,i);

    func();

    exit(0);

}

~                                                                    

Proj.c:           

#include

#include

#include "proj.h"

extern int i ;

 void func (void)

{

    printf("[%s]:i=%dn",__FUNCTION__,i);

    exit(0);

}

Proj.h:            

#ifndef PROJ_H___

#define PROJ_H___

void func(void);

#endif

                          

            

[tom@CentOS7 minproj_extern]$ gcc *.c

[tom@CentOS7 minproj_extern]$ ./a.out

[main]i=10

[func]:i=10

运算符

位运算:<<  , >>  , | 或, &与 ,^异或:不同为1 , ~取反。其中|,&的优先级较低

例子1:Int I = B 1100 = 12;   i >> 1得到 110=6 ; 110<<1得到1100 =12

例子2:1100 & 1001 = 1000; 1100 | 1001=1101 ; 1100^1001 =0101

意义:把操作上A的第n位置1: A = A | 1 << n

 把操作数A的第n位置0: A = A & ~(1<

测试操作数第n位: if ( A & 1<< n)

逻辑运算符:   !非

&&与,都对才对,左边错则右边不再运算。

||或,一个对就对。

三目运算符:A ? B : C

求字节运算符: sizeof();

强制类型转换   a=(int)b;

输入输出

1.格式化: scanf , printf

2.字符:    getchar, putchar

3.字符串:gets(!), puts

4.输出格式:十进制 d,I;  十六进制x, 八进制哦o , 不带符号十进制u, 单字符c, 字符串s,指数浮点数e , 浮点数f , 百分号本身%%。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号