学习笔记—C语言基础篇

标识符命名规则
标识符不能是关键字
标识符只能由字母、数字、下划线组成
第一个字符必须为字母或下划线
标识符中字母区分大小写
进制转换 (取反法)
将一个十进制数转成二进制 : 除二反序取余    
将一个二进制数转成十进制 : 权值法
将一个八进制转化成二进制 : 将一个八进制看成三位二进制,不满足高位补0,从高位到低位一次连接
将一个十六进制转化成二进制 : 将一个十六 进制看成四位二进制,不满足高位补0,从高位到低位一次连接
十六进制转化成八进制 : 先将十六进制转二进制再转八进制 

  2   1993 ...1    1993 = 11111001001
  2    996  ...0
  2    498  ...0
  2    249  ...1
  2    124  ...0
  2      62  ...0
  2      31  ...1
  2      15  ...1
  2       7   ...1
  2       3   ...1
  2       1   ...1


8421法则:2进制      10进制
                 1000  ->  8
                   100  - >  4
                     10  - >  2
                       1  - >  1
在c语言中打印八进制,十进制,十六进制
int a = 0123; //八进制0
int b = 0xabc;//十六进制0x
int c = 123;//十进制
%o 将结果以无符号八进制形式输出
%x %X 将结果以无符号 十六进制 x输出小写 X输出大写
%d 将结果以有符号 十进制形式输出
%f  将结果以浮点形式输出 默认保留6位 %.3f保留小数点后面3位
%p 将一个变量的地址以十六进制的格式打印输出 
%u 将一个结果以无符号十进制输出
%c 打印一个字符
%s 打印字符串(以‘\0’结尾)
数据存储原理
正数的原码,反码,补码都一样;
负数的反码是符号位不变,其余位取反、补码是符号位不变,其余位取反加一;
十进制数
原码
+15
0000 1111
-15
1000 1111
+0
0000 0000
-0
1000 0000
十进制数
反码
+15
0000 1111
-15
1111 0000
+0
0000 0000
-0
1111 1111
十进制数
补码
+15
0000 1111
-15
1111 0001
+0
0000 0000
-0
0000 0000
在计算机系统中,数值一律用补码来存储,主要原因:
1、统一了零的编码
2、将符号位和其它位统一处理
3、将减法运算转变为加法运算
4,两个补码表示的数相加,如果最高位(符号位)有进位,则进位被舍弃
sizeof关键字
1,计算数据类型大小,单位为字节;
2,sizeof的返回值位size_t;
3,size_t类型在32位操作系统下时unsigned int,是无符号的整数
数据类型在32位操作系统中内存占得字节大小(BYTE) 8bit = 1 Byte
char  字符型 1Byte (本质是一个字节的整型类型)
short 短整型 2Byte
int     整型     4Byte
long  长整型  4Byte
float    单精度浮点型  4Byte
double 双精度浮点型  8Byte
ASSIC 码
32 对应 空格
48 对应 0
65 对应 A
97 对应 a
溢出
有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,但最高位的溢出会导致最高位丢失。
限定符
限定符
含义
extern
声明一个变量,extern声明的变量没有建立存储空间。
extern int a;//变量在定义时建立存储空间
const
定义一个常量,常量的值不能修改。
const int a = 10;
volatile
防止编译器优化代码
register
定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。
printf函数
printf是输出一个字符串,putchar输出一个char。
printf格式字符:
打印格式
对应数据类型
含义
%d
int
接收整数值并将它表示为有符号的十进制整数
%hd
short int
短整数
%hu
unsigned short
无符号短整数
%o
unsigned int
无符号8进制整数
%u
unsigned int
无符号10进制整数
%x,%X
unsigned int
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF
%f
float
单精度浮点数
%lf
double
双精度浮点数
%e,%E
double
科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写
%c
char
字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%s
char *
字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
%p
void *
以16进制形式输出指针
%%
%
输出一个百分号
 
printf附加格式:
字符
含义
l(字母l)
附加在d,u,x,o前面,表示长整数
-
左对齐
m(代表一个整数)
数据最小宽度
0(数字0)
将输出的前面补上0直到占满指定列宽为止不可以搭配使用-
m.n(代表一个整数)
m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。程序结果
#include <stdio.h>
int main()
{
    int a = 100;
    printf("a = %d\n", a);//格式化输出一个字符串
    printf("address = %p\n", &a);//输出变量a在内存中的地址编号
    printf("输出%%号:%%d\n");

    char c = 'a';
    putchar(c);//putchar只有一个参数,就是要输出的char
    long a2 = 100;
    printf("%ld, %lx, %lo\n", a2, a2, a2);

    long long a3 = 1000;
    printf("%lld, %llx, %llo\n", a3, a3, a3);

    int abc = 10;
    printf("设置位宽为6:          abc = '%6d'\n", abc);
    printf("设置位宽为6并且左对齐:abc = '%-6d'\n", abc);
    printf("设置位宽为6以0补齐:   abc = '%06d'\n", abc);
    printf("abc = '%-06d'\n", abc);

    double d = 12.3;
    printf("设置位宽为10,精确到小数点后3位:d = \' %-10.3lf \'\n", d);

    return 0;
}
结果:



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值