Linux C基础笔记(2)

**补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符、常量变量和输入输出。第三部分是控制语句、数组、字符串函数。第四部分为指针、函数以及分配内存管理。在写完这四部分之后我会继续上传数据结构、IO、以及网络编程的学习笔记,大家如果有需要学习Linux下编程的可以关注一下,我会将我所有的学习笔记发布在此供大家一起学习。(在笔记里面会有一些其他博主的总结,如果涉及到实属抱歉,您可以通过邮箱联系我,我会及时修改。**1509965601@qq.com)。

【0】运算符

     算术运算符:+ - * / % ++ --

1】关系运算符和逻辑运算符
他两主要用于判断,在条件语句当中经常使用

关系运算符>    <    >=    <=   ==    !=逻辑运算符逻辑与:&&, 运算符两边都为真才为真 逻辑或:|| ,只要有一个为真就为真逻辑反:!,原来为真则为假,原来为假,则为真

【2】位运算符

A = 0011 1100

位逻辑反 ~        ~ 1 = 0, ~0 = 1;位逻辑与 &        0 & 0 = 0,  0 & 1 = 0; 1 & 0 = 0; 1 & 1 = 1; 位逻辑或 |      0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1;位逻辑异或 ^      0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0;左移 <<          A << 2 = 1111 0000右移 >>        A >> 2 = 0000 1111

【3】赋值运算符与赋值复合运算符

==  代表判断
=  代表赋值赋值运算符为“=”,其运算的一般形式如下:<左值表达式> = <右值表达式>赋值复合运算符其运算的一般形式如下: <变量>  <操作符>=  <表达式>a + b => a += b;a = a / b => a /= b;+=:  C += A 相当于 C = C + A;-=:  C -= A 相当于 C = C - A*=:  C *= A 相当于 C = C * A/=:  C /= A 相当于 C = C / A%=:  C %= A 相当于 C = C % A<<=:  C <<= 2 相当于 C = C << 2>>=:  C >>= 2 相当于 C = C >> 2&=:  C &= 2 相当于 C = C & 2^=:  C ^= 2 相当于 C = C ^ 2|=:  C |= 2 相当于 C = C | 2

【4】逗号运算符(“,”)
从左到右依次计算,最后表达式的值,作为整个表达式的值。
整个表达式的值就是最后一个表达式的值
但是前边所有的表达式都会被计算。

int a = 10, b = 5, c = 9;这个不是逗号运算符,逗号运算符需要加括号
a = a + b + c, a+b, c;a = ( c = a + b, c++, c = b + c);
a = 21;

【5】条件运算符"? :" – 三目运算符
条件运算符"? :"是一个三目运算符, 其运算的一般形式是:
<表达式1> ? <表达式2> : <表达式3>

执行过程:先执行表达式1,如果表达式1为真,则执行表达式2,否则执行表达式3等价于if..else...if(表达式1){表达式2}else{表达式3}

【6】sizeof运算符
sizeof运算符运算的一般形式如下:
sizeof(<类型或变量名>)

是一个关键字,计算一个变量或者数据类型所占的内存空间的大小,以字节为单位。
注意:它只针对数据类型,而不针对变量!

【7】变量与常量
常量是指在程序运行期间其数值不发生变化的数据。

 整型常量C语言的整数可以是十进制数、八进制数和十六进制数。可以有一个后缀U(无符号)或L(长整形)  例如: 215U, 84L浮点常量 浮点常量又称为实数,一般含有小数部分。在C语言中,实数只有十进制的实数,它又分为单精度实数和双精度实数,它们的表示方法基本相同。实数有两种表示方法, 即一般形式和指数形式。float或者double定义的变量所对应的数据科学计数法:3.5e+5 = 350000   3.5e-5 = 0.000035字符常量所谓字符常量是指一个单一字符, 其表示形式是由两个单引号包括的一个字符。常用转义字符\\      \ 字符\'    ' 字符\"    " 字符\r 回车符 (跳到本行开头)\n    换行\t    水平制表符\b 退格符     字符串常量所谓字符串常量是指用双引号括起来的一串字符来表示的数据。a  变量'a' 字符"a" 字符串,每一个字符串都会有一个结束标志,'\0'大小写字母A和a差32;A=65; a=97;数字0和字符‘0’差48  ‘0’=48;空格为 32;常量定义1.#define预处理器    #define 符号名 替换列表    (替换列表可以是任意字符、数字、字符串、表达式等)#define M(x,y,z) x*y+zmain()  {  int a=1,b=2, c=3;    printf("%d\n", M(a+b,b+c, c+a)); }输出结果为122.const      const int a = 10; a的值不能被修改  const指针   const int *p = a   指针指向的内容是只读的  (无法被修改) a不可改变,p可改变        int * const p = a  指针本身是只读的(无法被修改) p不可改变,a可改变变量:static 静态变量说明符   静态局部变量:在函数内使用,退出函数不能使用静态全局变量:只能在定义变量文件内使用指针函数中延长生命周期修饰函数,extern 全局变量声明  可以在其他文件使用该变量,

【8】格式输入输出函数
printf/scanf

#include <stdio.h>
int printf(const char *format, ...(arg));(文件末尾详细解读了各种输出格式)
功能:按照一定的格式将数据输出到终端
参数:format:格式控制串%d 十进制整数%u 无符号的十进制整数%o 八进制整数%x 十六进制整数%c 字符数据%s 字符串%f 浮点类型%% 百分号本身%e(%E) 浮点数指数输出[e-(E-)记数法]%g(%G) 浮点数不显无意义的零"0"附加格式说明符m   输出数据域宽,数据长度<m,左补空格;否则按实际输出.n 对实数,指定小数点后位数(四舍五入)- 输出数据在域内左对齐(缺省右对齐)+  指定在有符号数的正数前显示正号(+)0    输出数值时指定左面不使用的空位置自动填0#   在八进制和十六进制数前显示前导0,0xl long类型输出 %lddouble类型输出 %lfarg:可变参
返回值:成功输出的个数#include <stdio.h>
int scanf(const char *format, ...(arg));
功能:按照格式从终端输入数据
参数:format:格式控制串%d 十进制整数%c 字符数据%s 字符串%f 浮点类型arg:可变参如果要将输入的数据保存在arg变量里面,需要传arg的地址
返回值:成功输入的个数垃圾字符的回收:在输入多个字符的时候,往往会产出空格以及回车这个垃圾字符,所以需要处理scanf("%c%c%c", &a, &b, &c);方法1:使用空格隔开   scanf("%c %c %c", &a, &b, &c);方法2:使用%*c隔开,但是那次只能回收一个    scanf("%c%*c%c%*c%c", &a, &b, &c);方法3:使用getchar来回收垃圾字符 scanf("%c", &a);getchar();scanf("%c", &b);getchar();scanf("%c", &c);getchar();输入字符串时,注意不能超过其规定的字符串的字节数的范围如果想输入一个带空格的字符串,使用%[^\n]getchar() 读取一个字符
putchar() 输出一个字符
gets()    读取一个字符串
puts()  输出一个字符串strcpy(s1, s2); 复制字符串 s2 到字符串 s1。strcat(s1, s2);连接字符串 s2 到字符串 s1 的末尾。strlen(s1); 返回字符串 s1 的长度。strcmp(s1, s2);如果 s1 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。

【附录】printf 输出格式(转载CSDN某博客,具体是哪位大神的我也记不清了,当时逛博客的时候发现的,如有任何问题可以给我发邮箱,我会随时回复)
---------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。

①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
例:
main()
{ int a = -1;printf("%d, %o", a, a);
}
运行结果:-1,177777
程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式    输出。④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。⑤c格式:输出一个字符。⑥s格式:用来输出一个串。有几中用法%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m    ,则左补空格。%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n   个字符正常输出。⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:%f:不指定宽度,整数部分全部输出并输出6位小数。%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。⑧e格式:以指数形式输出实数。可用以下形式:%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数    据所占的宽度。⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

---------------------------------------
关于printf函数的进一步说明:
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3);
输出0.333333%。

---------------------------------------
对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位.

由高手指点
对于m.n的格式还可以用如下方法表示(例)
char ch[20];
printf("%*.s\n",m,n,ch);
前边的
定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

(验证成功)
今天()又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:

int slen;

printf(“hello world%n”, &slen);

执行后变量被赋值为11

Linux C基础笔记(2)相关推荐

  1. Linux C基础笔记(4)终结篇

    Linux C基础笔记(4)终结篇 补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符.常量变量和输入输出.第三部分 ...

  2. Linux C基础笔记(3)

    Linux C基础笔记(3) 补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符.常量变量和输入输出.第三部分是控制 ...

  3. Linux C基础笔记(1)

    Linux C基础笔记(1) [1]四个重要的人物 肯.汤姆森:B语言发明者,C语言发明者,UNIX发明者,AT&T 丹尼斯.里奇:C语言之父,UNIX 之父 理查德.斯托曼:自由软件之父,l ...

  4. 萌新linux的基础笔记

    笔记下载 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 命令 vim vim命令 前言 一个萌新写的linux的基础笔记 命令 ls //查看当前目录文件夹与文件 ...

  5. Linux:基础笔记

    Linux:基础详细版 Linux基础知识: 文件信息: Linux是一个以根目录为核心,多个子目录和软链接组成的操作系统 linux中不同类型文件的颜色: 白色:普通文件 蓝色:目录 绿色:可执行文 ...

  6. linux驱动内核,Linux内核设备驱动之Linux内核基础笔记整理

    1. Linux内核驱动模块机制 静态加载, 把驱动模块编进内核, 在内核启动时加载 动态加载, 把驱动模块编为ko, 在内核启动后,需要用时加载 2. 编写内核驱动 #include #includ ...

  7. Linux文件目录基础笔记

    1.进入目录名称:cd cd命令主要是方便用户切换到不同目录的指令. 比如:cd #只执行cd命令默认进入root的根目录 cd /home #进入home目录,如果home目录有testdir目录的 ...

  8. 2.linux系统基础笔记(延时操作、实时系统中的定时器、事件)

    延时操作 延时操作是操作系统中经常遇到的一种情形.延时的原因很多,有的时候是为了等待外设芯片处理结束,有的时候是为了暂时释放cpu的使用权,有的就是为了希望在一段时间获取资源,如果没法在单位时间内获取 ...

  9. 1.linux系统基础笔记(互斥量、信号量)

    操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的windows系统已经开始运行了.如果问大家操作系统是什么?可能有的人会说操作系统就是windows,就是那些 ...

最新文章

  1. 1分钟选好最合适你的JavaScript框架
  2. JAVA单线程以及java多线程的实现方式
  3. GitHub Port 443 Refused
  4. Android多媒体开发:录音机
  5. 列举java接口_Java接口特点列举说明
  6. Java多线程面试准备:聊聊Executor框架
  7. CodeForces - 1395D Boboniu Chats with Du(贪心)
  8. mysql闪回工具下载_MySQL闪回工具之myflash 和 binlog2sql
  9. lombok依赖_使用Lombok 前你需要知道这些
  10. 计算机网络之数据链路层:13、令牌传递协议、轮询协议-轮询访问介质访问控制
  11. MTK 驱动开发(48)---ARM 看门狗机制
  12. solaris perl print不输出_IC设计中的perl编程
  13. python口号_编程语言的口号
  14. 诊断Oracle 服从成绩
  15. JS面向对象的程序设计(二)
  16. 个性化头像生成——微信小程序开发
  17. 我的Java学习历程03【Java8接口新特性-下】
  18. flea-frame-cache使用之Redis接入【旧】
  19. php弱口令总结,web漏洞之弱口令
  20. 【POI 2006】 Tet-Tetris-3D

热门文章

  1. 计算机电缆检测报告,天联牌计算机电缆详细介绍
  2. KubeSphere对于已经部署的服务进行修改后重新进行部署
  3. Redis主从复制、哨兵、Cluster安装部署
  4. golang 框架_Golang:数据库ORM框架gorm详解
  5. 微型计算机字长为4表示,一台微型计算机的字长为4个字节,它表示什么?
  6. java报505_Java调用URL错误,报505
  7. 燃气灶电气线路图及原理_电气安装造价如何入门,核心知识已为你打包
  8. Java 内存溢出(java.lang.OutOfMemoryError)解决
  9. python包标准类型和动态导入模块和多态和反射和授权
  10. (超简单)Nginx状态统计模块