c语言知识点

1.环境搭建-创建项目

创建新项目-->空项目-->源文件创建.c文件


2.main

main函数是有且只有一个,为入口函数

int main()

{return 0;}


3.printf(输出函数)

printf("hello world");

4.scanf(输入函数)

scanf("%d",a);


5.头文件

#include<stdio.h>  //对函数声明


6.注释

单行注释  //后跟注释内容

快注释  /*  注释内容 */


7.进制

二进制:0b1010

十进制:10

十六进制:0xa

八进制:012

//以上进制都表示阿拉伯数字10


8.进制转化

二进制-->十进制     //要从右到左用二进制的每个数去乘以2的相应次方

十进制-->二进制     //采用"除2取余,逆序排列

二进制-->十六进制 //二进制数每四位一组,转换为相应的十六进制数,10为a,11为b...15为f

十六进制-->二进制 //通过除二取余得二进制数,每个十六进制为四个二进制,不足左边补零


9.数据在内存中是以补码形式存储的

对于正数来说,其原码,反码,补码是相同的

对于负数来说

原码为:1+数值位  //首位1为符号位,表示负数

反码为:1+按位取反的数值位 

补码为:1+反码数值位+1 


10.数据类型

整型:

short(短整型,占2字节,打印类型为%hd)

int(整型,占四字节,打印类型为%d)

long(长整型,占四字节,打印类型为%ld)

longlong(长长整型,占八字节,打印类型为%lld)

unsigned(无符号整型)//只表示数据量,无正负,首位不是符号位

浮点型:

float(单精度浮点型,占4字节,打印类型为%f)//标识在数后加F,比如f=3.14F

double(双精度浮点型,占8字节,打印类型为%lf)//无标识默认为此类型

浮点型比较有俩种方法

第一种:f=3.14F  //目的是让单精度和单精度相比

第二种: fabs(f-3.14)<0.000001  //差值过小认为相等

字符型

char(字符型,占1字节,打印类型为%c)

char a;

a=’A'  //定义字符必须为单引号,可以直接赋值ASCLL码

ASCLL码 :A的ascll码为65 大写A+32=小写a,即a的ascll码为97

char c;
c = 'A';
c = 65;

printf("%c--%d \n", c,c); //值为A--65

char c2 = '\n';   //转义字符

printf("%c", c2);  //输出一个空行

布尔类型: 保存逻辑值  是true 1(非0的数)  否false(0)

c99 c语言中加入了布尔类型 bool,跟其他语言的布尔类型对比不完善

所以使用应该为:_Bool b;    //vs对c99支持不完善,vs中的布尔类型_Bool


11.sizeof  //计算数据类型或变量所占字节个数

printf("%u",sizeof(short));  //结果为2

short(取值范围为-2^15-----2^15-1)

#include<stdint,h>  //定义整型大小

int16_t(占了16字节)
#include<limts.h>SHRT_MAX


12.转义字符

\n换行符        \r回车符        \t水平制表符        \\表示一个反斜线字符\


13.运算符

算数运算符

+加        -减        *乘        /除(整除整,结果只为整数)        %取余(只能对整型取余)

判断一个数是不是偶数:

    int n;
    scanf_s("%d", &n);
    if (n % 2 == 0)  //  表示是否相等
    {
        printf("偶数\n");
    }
    else
    {
        printf("奇数\n");
    }

赋值运算符

=       +=          -=         *=          /=         %=

比较运算符(用于比较,并返回一个真值或者假值,即结果只为1或0)

>        >=        <        <=        ==        !=

逻辑运算符

&&  1&&1 -->1  必须全部满足,与

||  0||0--->0  只满足一个,或

!   颠倒黑白,非

短路问题

int x, y;
x = 0;
y = 1;

x && y++;//x为0  整个表达式结果已经为0了 计算机不会在继续往后计算 y++不会执行

x=0,y=1

y++&& x;//0; y=2

y || x--;   同理x--不执行

y=1,x=0

位运算

<< 左移 ,在一定范围内 ,左移n位 相当于是 a * 2^n

>> 右移 ,左右移动有范围,缺少部分补零

&  按位与        1&1 == 1         1&0 == 0

|  按位或        1|0 == 1        0|0 == 0

^  按位异或        1 ^ 0 == 1        1^ 1 == 0        0^0 == 0

~  按位取反    

short a = 3;

printf("%hd\n", a << 4);  //值为48

0000 0000 0000 0011-->0000 0000 0011 0000

printf("%hd\n", a << 14); //值为-16384

0000 0000 0000 0011-->1100 0000 0000 0000       //首位为1,表示负数

a++ 先用 再自增

++a 先自增 再用

A:    a=5;  b=++a; // 相当于a=a+1;b=a;  结果是a=6,b=6
B:    a=5;  b=a++; // 相当于b=a;a=a+1; 结果是a=6,b=5

C语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程
序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,
那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组
成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串
已不再可能组成一个有意义的符号。这个处理的策略被称为“贪心法”。

 

                       

               

                        

                     

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值