2019/8/20 C语言回顾(2)

一、逻辑运算符

&&  逻辑与

表达式1 && 表达式2

1          1          1

1          0          0

0          1          0

0          0          0

口诀:与0为0,与1不变

特点:当表达式1结果为真的时候,会继续判断表达式2的结果,但如果表达式1的结果为假,则不会去判断表达式2是否成立

|| 逻辑或

表达式1 || 表达式2

1          1        1

1          0        1

0          1        1

0          0        0

口诀:或0不变,或1为1

特点:当表达式1不成立时,继续判断表达式2的结果,当表达式1成立时,则不会判断表达式2是否成立

! 逻辑反

真变成假 假变为真

!0   1

!非0值   0

!250   0

二、位运算符

1、& 按位与   将两个数值进行按位与运算

2、|  按位或

3、~  按位取反  不用管符号位,直接取反

4、^  异或  相同为0,不同为1

注意:最好不要拿自身和自身异或

数据交换

int a = 15 , b = 20;

1、中间变量

int c;

c = a;

a = b;

b = c;

2、算术运算

a = a + b;

b = a - b;

a = a - b;

3、异或

a = a ^ b;

b = a ^ b;

a = a ^ b;

5、左移(逻辑左移) << 不需要关心符号位,后面补0

6、>> (算术右移)需要考虑符号位,前面补符号位      如果原来是正数,则补0

如果原来是负数,则补1

快速置0

将第n位置0

a = a & ~(1 << n)

将第n位快速置1

a = a | (1 << n)

三、特殊运算符

四、逗号运算符

a = (表达式1,表达式2,表达式3);

a = (x = 1,y = 2,x + y);

结果为最后一个表达式的结果

sizeof运算符

计算数据或者数据类型所占内存空间大小

五、条件运算符(三目运算符)

? :

表达式1?表达式2:表达式3

判断表达式1的结果,如果表达式1成立,则输出表达式2的结果,如果不成立,则输出表达式3的结果

六、输入输出

输入:input   写  输入设备--》内核---》用户

输出:output 读  用户---》内核---》输出设备

三大手册

info

help

man 1   Executable programs or shell commands                shell 命令

2   System calls (functions provided by the kernel)     系统调用

  3   Library calls (functions within program libraries)    库函数

七、二制前导符          0b

  八进制前导符      0

  十六进制前导符   0x

八、1、格式化输出函数

  printf

  #include <stdio.h>

  int printf(const char *format, ...);

  功能:打印格式控制串

  参数:1、格式控制串

  格式控制符

d    有符号的十进制整数

o    八进制数

x    十六进制数

     u    打印无符号十进制数

f    输出浮点型数据

e    以科学计数法的方式打印浮点型数据

g    自动匹配

c    打印单个字符

s    打印字符串

2、输出表

    %  修饰符 格式控制符

   m     提供m个字符的空间存放输出结果,默认右对齐

.n    保留小数点后n位

-     将默认右对齐改为左对齐

l     修饰d,o,x的时候会将数据转化为long类型,修饰f,e,g则会转化为double类型

#     原型输出

返回值:成功返回打印的字符个数,失败返回一个负值。

&:取地址符

格式化输入函数

scanf

  #include <stdio.h>

  int scanf(const char *format, ...);

  功能:从键盘获取一个数据

  参数:1、格式控制串

  2、地址表

  分隔符:空格 tab 回车

  返回值:输入数据正确的个数

  修饰符:抑制符

*

  2、输出单个字符

  putchar

  功能:输出单个字符

  参数:字符对应的ascii值

  返回值:返回输出字符对应的ascii值

  获取单个字符

  getchar

  功能:从键盘获取单个字符

  参数:无

  返回值:返回获取到的字符对应的ascii码值

  3、输出字符串

  puts

  int puts(const char *s);

  功能:输出字符串

  参数:字符串首地址

  返回值:成功返回一个非负值,失败返回EOF(-1);

  puts:自带换行

  输入字符串

  gets

  char *gets(char *s);

  功能:从键盘获取字符串

  参数:存放字符串的空间

  返回值:字符串首地址

  printf的“%s”以及puts都是遇到‘\0‘截止

原文地址:https://www.cnblogs.com/epll/p/11386103.html

时间: 2024-11-05 14:49:46

2019/8/20 C语言回顾(2)的相关文章

2019/8/19 C语言回顾(1)

一.冯诺依曼 将计算机分为5个部分 (1)输入设备:键盘.鼠标 (2)输出设备:显示屏 (3)存储器: 内存(运行内存)RAM:内存条 外存 ROM: 硬盘.光盘.u盘.sd卡 寄存器:在cpu内部 .提高程序的运行效率 (4)运算器 (5)控制器 注:运算器和控制器集成为cpu 二.进制转换 1.十进制  逢十进一    78 = 8*10^0 + 7*10*^1 二进制  逢2进一      1001110 八进制  逢8进1 十六进制  0,1,....a,b,c,d,e,f 3位二进制数

2019/8/24 C语言回顾(5)

一.二维数组 一般形式 数据类型 数组名[行标][列标]: | 数组内元素的数据类型 int a[2][3]; 数据类型 int 完全初始化 int a[2][3] = {1,2,3,4,5,6}; int a[2][3] = {{1,2,3},{4,5,6}}; 注意:行标可以省略,列标必须保留 不完全初始化 int a[2][3] = {1,2,3,4}; int a[2][3] = {{1,2},{3,4}}; 不初始化 数组置零 a[2][3] ={0}; 引用二维数组元素 数组名[行标

C语言回顾一“Hello world”

每个学程序的人都是冲"Hello world"开始进入神奇编程的世界! 简单的代码: #include <stdio.h> int main() { printf("Hello World\n"); } #include<stdio.h>将从编译器的安装文件夹下的include文件夹下去搜索stdio.h头文件.stdio.h是标准的输入输出流文件. int main()是整个程序的入口,就好比进入一个房间首先得找到进入房间的入口,也就是房门

「C语言回顾之旅」第一篇:指针详解

说明: 最近学校课程开设了<数据结构>的课程,无疑,数据结构的重要性在IT生涯的进阶路上是不可置疑的,也常说,数据结构是专业性与非专业性的分界线.所以无论以后走的是什么方向,毕竟是读计算机专业的,所以必须学好数据结构的.虽然目前我给自己定的方向是走运维/系统架构方向的,可有句话说得好,不懂开发的运维注定会被淘汰,在IT这一行,要让自己变得更加强大.最近也一直在学Python,感觉还不错,学数据结构相信对自己也肯定有好处的,对一些较为底层的知识有些了解和理解,这样才能走得更远! 无疑C语言就很重

C语言回顾

1.C语言共32个关键字 1)数据类型关键字 a.基本数据类型 void char int float double b.类型修饰关键字 short long signed unsigned c.复杂类型关键字 struct union enum typeof sizeof d.存储级别关键字 auto static register寄存器类型  extern const volatile 2)流程控制关键字 a.跳转结构 return continue break goto b.分支结构 if

「C语言回顾之旅」第二篇:指针详解进阶

说明: 第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的.这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的. 一.指向函数的指针 1.函数指针 ·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数: ·编写一个程序返回两个数的最大值,通过函数指针调用函数: a.main函数代码如下: #include<stdio.h> int max(int *, int *);

c语言回顾之指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

loj刷题记录2019/2/20

#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有 NNN 个房间,MMM 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 DiD_iDi? 为如果所有的通道都被修建,第 iii 号房间与第 111 号房间的最短路径长度: 而 SiS_iSi? 为实际修建的树形城堡中第 iii 号房间与第 111 号房间的路径长度: 要求对于所有整数 iii (1≤i≤N1\le i\le N1≤i≤N),有 Si=DiS_i= D_iSi?=Di?

PAT 甲级 A1010 (2019/02/20)

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; LL Map[256]; // 0 ~ 9, a ~ z 与 0 ~ 35 的对应 LL Y = 1; // 定义LL型的Y LL inf = (1LL << 63) - Y; // long long 的最大值 2^63 - 1,注意括号 void init