C基础 进制转换、printf、分隔符、运算符 3月28日

本文介绍了Linuxshell中的基本命令,如pwd、ls、cd、touch、mv、rm等,以及vim编辑器的三种模式。还涉及了C语言的gcc编译器和程序执行流程。同时,详细阐述了计算机的二进制、十进制、十六进制、八进制之间的转换,以及ASCII码的概念。最后提到了C语言中的printf函数和词法符号,包括运算符和逻辑表达式。
摘要由CSDN通过智能技术生成

3.28

复习

shell的基本命令

pwd 显示当前所在位置的绝对路径

ls 列出当前路径下的所有文件:ls -a(包括隐藏文件;用来删除重复文件 ·swp);ls -l(显示所有文件的详细信息)

cd :跳转到指定目录

·当前路径  ··上一级路径

touch:创建普通文件(无任何内容)0KB,更新时间戳

mv:1.移动文件 2.重命名

rm:删除文件      rm -r:删除非空目录

cat:查看文件

cp:1.复制文件到当前目录     2.复制文件到指定目录

mkdir:创建目录; rmdir:删除空目录
每个字符串多一个字节; 空格算一个字节

vim编辑器

vim编辑器三种模式:命令 编辑 底行

命令行:复制(yy nyy) 粘贴(p 粘贴最后一次复制的内容) 剪切(dd ndd) 撤销(u 撤销一次操作)

编辑:a(从光标后一个字符)i(从当前字符开始插入)  o(从光标的下一行开始插入)

​           ESC  退出到命令行模式

底行模式: 冒号进入 对文件进行保存退出等功能

q:退出文件 w:保存 wq:保存退出  q!:强制退出   x:强制保存退出

gcc编辑器

将C代码编译成机器可识别的``二进制可执行文件``

gcc+文件名

gcc+文件名+-o+自定义

执行:./文件名

计算机的基本结构

输入设备:鼠标 键盘

输出设备:屏幕 音响

存储器:内存+外存(储存程序、静态)       运算器+控制器=cpu

程序由cpu调动运行,存储在磁盘,被加载到内存中执行

计算机只知道0和1               以0和1的方式存储

程序=编辑+编译、链接+执行、调试

数值数据

十进制:

基数:10 (0-9)
位权表示法:
   C语言位数是从0开始,位权*基数^n次方
   314:3*10^2+1*10^1+4*10^0
十进制转二进制:
   短除法:除二取余,直到商为0,余数倒叙 (适用于数字较小)
   534=1000010110
   凑数法
   534==512+16+4+2==2^9+2^4+2^2+2^1==1000010110
   2^8=256 2^10=1024 2^16=65536
   2023=10001100011
   HEX:16进制--DEC:10进制

二进制:

基数:2(0~1)
二进制转十进制
位权表示法:
10101111==1*2^7+1*2^5+1*2^3+1*2^2+1*2^1+1*2^0=128+32+8+4+2+1=175

十六进制:

A——10 B——11 C--12 D--13 E--14 F--15
基数:16(0~15) 基数是数
十六进制转二进制:将一位十六进制数转为四位二进制数
0x表示这个数为16进制数
0xf312==1111 0011 0001 0010
二进制转十六进制:将四位二进制数转换为一位十六进制数
1101101101111=0x1b6f
十六进制转十进制:
位权表示法:
0xf312==15*16^3+3*16^2+1*16^1+2*16^0=
十进制转十六进制:
先将十进制数转为二进制数,再将二进制数转为十六进制
520=1000001000=0x208
1058=10000100010=0x422
2060=100000001100=0x80c
2080=100000100000=0x820
578=1001000010=0x242
298=100101010=0x12a

八进制:

基数:8(0~7)
八进制转二进制
     三位二进制数表示一位八进制数
     八进制数034 056 0777(全部权限)
     0777==111 111 111
     034==11 100
     0165277==1110101010111111
     八进制转十进制:
     位权表示法:02042=2*8^3+4*8^1+2*8^0
     十进制转八进制:
            将十进制转为二进制,再将二进制数转为八进制
            2050==100000000010==04002
            

非数值数据

不能直接被计算机识别的数据

ASCII码: man ascii 统一了数值数据和非数值数据的一个转换

字符用''表示
NULL--0
'\n'  --10
'0'   --48
'A'   --65
'a'   --97

c语言输出函数printf

功能:向终端输出打印指定内容
printf("格式控制串",输出表)printf("普通字符")
printf("hello world\n");  (\n表示换行)
格式控制串(用双引号)   (字符用单引号)
   1.普通字符原样输出
   %d = 整型数据输出   :int
   %c = 输出字符型数据 :charint就是ASCII码对应右边的数字  char则是左边的所对应的)
   %f = 输出浮点型数据 :float  (输出的是小数)
   输出表:指定输出的内容,多个参数之间由逗号隔开
   int main(int argc, char *argv[])
 10 {int a;
 11     a=3;
 12     char b ='*';
 13     float c=3.14;
 14     printf("a=%c\n",a+b);//相当于将'*'根据ASCII码表转化为整型数据再与a=3相加,最终输出为字符型数据
 15 return 0;
 16 }
hqyj@ubuntu:~/3.28$ vi 3.c
hqyj@ubuntu:~/3.28$ gcc 3.c
hqyj@ubuntu:~/3.28$ ./a.out
a=-
同理:
    #include <stdio.h>
  8 
  9 int main(int argc, char *argv[])
 10 {int a;
 11     a=3;
 12     char b ='*';
 13     float c=3.14;
 14     printf("a=%d\n",a+b);
 15 return 0;
 16 }
hqyj@ubuntu:~/3.28$ vi 3.c
hqyj@ubuntu:~/3.28$ gcc 3.c
hqyj@ubuntu:~/3.28$ ./a.out
a=45

词法符号

关键字:32个关键字

系统预定义的特殊的词法,不能由用户自定义

标识符:由用户自定义,用来给各个数据命名

1.有数字,字母,下划线_组成:a,b,ab,a1,b1,jkgjhg,_khl,
2.不能以数字开头
3.不能和关键字重名

分隔符

注释符:
   1.//  注释掉//后的这一行所有内容
   2./* xxx */ 注释掉中间这xxx内容(习惯于文件开头)
   3.#if 0     注释掉中间的语句块
       语句块
        #endif    (可以把不需要测试的功能屏蔽掉)0改成1 即可恢复以前(#if 1

运算符

运算符按功能来分:
算数运算符:+ - * / %(取余符号a%b 左右两侧必须是整数)
int a=5 b=2;
a/2==2 ;(=为赋值,==为等于)
a%b==1
    练习:分别得出357的十位个位白位
    int a,b,c,d;
 13     a=357;
 14    // char b ='*';
 15    // float c=3.14;
 16     printf("b=%d\n",a%10);
 17 
 18     printf("c=%d\n",a/10%10);
 19 
 20     printf("d=%d\n",a/100);
hqyj@ubuntu:~/3.28$ vi 3.c
hqyj@ubuntu:~/3.28$ gcc 3.c
hqyj@ubuntu:~/3.28$ ./a.out
b=7
c=5
d=3

逻辑运算符:&& || !
    &&:00   ||:有11
        int x=5,y=18;
(x>5)&&(y<20)    0
    ((x+1)>0)&&(y<17) 0
    ((x-8)>0)&&(y==18) 0
    ((x>=5))||(y<20) 1
    ((x-5)>0)||(y!=8) 1
    
关系运算符:> < == != >= <=
  
赋值运算符:= += -= *= /= %= >>= <<=
    a+=1-->a=a+1  (左值+=右值-->左值=左值+右值)
    
位运算符:
    正数:
    右移:>>(右移n位就舍弃末尾n位)(右移n位等价于除上2的n次方)
    int a=50110010 右移两位-->1100-->12
    左移:<< (左移n位在末尾添加n个0,左边舍去)(左移n位等价于乘上2的n次方)
    int a=57111001 左移两位-->11100100--> 228
    正数的补码和反码相同 (补码就是反码加1)
    负数:=(正数补码)
    求反码(符号位不变,其他位按位取反)-->+1=补码--补码进行计算   
    左移:<< (左移n位在末尾添加n个0,但前面要舍去)(左移n位等价于乘上2的n次方)
    右移:>>(右移n位就舍弃末尾n位,但左边要添n个1)(右移n位等价于除上2的n次方)
    补码(符号位不变,其余取反)-->=反码+1-->=原码
    int a=-4
    -4----10000100
    
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独memories

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值