C语言学习笔记w2d2

week2-day1

一、数据的存储

1.1

  • 字符:
    字符是按ASCii码:一个整数对应一个字符,所以按整数的方式存储

在这里插入图片描述

  • 整型:
    有符号的整数:最高位为符号位,剩下的为数据位,-231~231-1
    无符号的整数:0~232-1
    整数是以补码的形式存储

原码:直接以二进制形式表示出的数:10:0b1010:1010、
正数10==00000000000000000000000000000001010==0x0000000A
负数:10==(0b)10000000000000000000000000001010==0x8000000A
反码:直接对原码取反,除符号位
补码:反码+1

负数补码:除符号位,反码+1
(short)-100原:1000000001100100
(short)-100反:1111111110011011
(short)-100补:1111111110011111
正数补码和原码相同
(short)100原:0000000001100100
(short)100反:0111111110011011
(short)100补:0000000001100100
负数补码转原码:取反+1

  • 浮点型:?
    参考
    小数部分:乘2取整
    浮点数存储分为数据部分和指数部分
    数据部分:整数部分、正负一样,小数部分乘以2取整,得到对应二进制编码
    指数部分:小数点向后移动,直到全整。按整数表示(补码)
    123.874 二进制:1111011.110111

二、标准输入输出

#include<stdio.h>

2.1 输出

printf()
使用的格式不多说
printf格式控制符:

控制符说明
%d十进制整型数据
%ld长整型数据
%o八进制整数
%x十六进制整数
%mdm 指定的输出字段的宽度,
不足则左端补空格(格式修饰)
%u无符号整型,最好不要写成%d
%f单精度和双精度,小数部分6位,
超过6位的四舍五入
%n.mf输出实数时整数 n 位
小数 m 位(格式修饰)
%c一个字符
%s用来输出字符串。
(也可以格式修饰)
格式修饰作用
-左对齐
+标识正数的正号
#8、16进制数的前缀

%x、%X、%#x、%#X 的区别:2f、2F、0x2f、0X2F
%%:%本身
可以用整数形式输出一个字符的ASCii码

2.2 输入

scanf()
使用格式:scanf ( " 格式控制串 " , 地址表 )
注意格式控制与内容类型一致
scanf()的多个输入
scanf( " %d%d%d%d " ,&a,&b,&c,&d )
接收的是地址!!!
输入的时候用空格隔开,或回车输n次或回车+空格
注意:输入字符时,空格会占位
在使用scanf输入完成时,通常以空格回车来表示输入结束
想以某格式输入,要使格式控制串与实际输入匹配(字符、字符串时注意)
例如:想输入:a b c d:scanf("%c %c %c %c",a,b,c,d)
且无论输入时多加空格,只会读一个
在这里插入图片描述

**注意:*在调用多个scanf()输入字符时,上一次的回车会被录入,造成下一次出问题,所以使用抑制符 或固定一个回车的格式\n
在这里插入图片描述

输入格式修饰:*:抑制符,指定输入值不用变量接收

在这里插入图片描述

规定有空格但不输入空格?

练习

交换两数然后输出

#include<stdio.h>
int main(){
        int a,b;
        int c=0;
        scanf("%d %d",&a,&b);
        printf("a=%d,b=%d\n",a,b);
        c=a;
        a=b;
        b=c;
        printf("replaced!\n");
        printf("a=%d,b=%d\n",a,b);
        return 0;
}

三、运算符

3.1 算数运算符

+、-、*、/、%,不多说

**注意:**除数与被除数都是整数时,结果也为整除后结果

赋值运算符:=、+=、-=、*=、/=、++、–
++a和a++:++a先执行自增,再执行其他的运算;a++:先执行其他的运算,再进行自增

例如:a=1,b=1
b=++a、b=a++
前者b==2,a==2
后者b==1,a==2

3.2 比较运算符

<、>、==、<=、>=、!=,不多说。结果为0或1

3.3 逻辑运算符

&&与、||或、!非,不多说

3.4 位运算符(补码)

正数补码和原码相同
负数补码转原码:取反+1

&:位与,都为1时为1
|:位或, 都为0时为0
~:按位取反
在这里插入图片描述
^:异或,不同为1,相同为0
<<、>>左移、右移,指定位数移动,不移动符号位,
右移缺位补数时按符号位补(高位补:正数补0,负数补1),左移缺位补数时补0

3.5 三目运算符

条件?成立执行:不成立执行
a>b ? printf(“a大=%d”,a) : printf(“b大=%d”,b)

3.6 特殊运算符

sizeof(数据/数据类型)

作业

  1. 输入三个数,输出其中最大数
    在这里插入图片描述
  2. 交换两个整数,不使用第三个变量的情况下交换值。参考
  3. 输入一个四位数,输出每个位
  4. 输⼊⼀个整数a,如果小于10,则a * 10,否则a / 10,得到计算结果,输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值