c语言笔记1

第1章初识c语言

第2章c语言概述

2.1

//这是一个注释                                    该注释只能写一行

/*这是一个注释*/                                注释没有行数限制

#include<stdio.h>                             /*程序第一行,把stdio.h文件中所有内容都输入该行*/

                                                         /*#include这行代码是c预处理指令。通常c编译器在编译前会                                                              对源代码做一些准备工作,即预处理*/

                                                         /*stdio.h文件包含了供编译器使用的输入和输出函数,如无特                                                           殊情况,程序一般要包含stdio.h文件*/

int main(void)                                           /*主函数,总是被第一个调用,main()函数在一个函数中                                                               唯一存在,main()函数必须是一个程序开始的函数。()代                                                               表main是函数。*/

{

        int num;                                     /*使用一个名为num的变量并且num是int类型*/

变量的命名要具有可读性,比如num,age,long等

        num=1;                                     /*为num赋值,把右侧的值赋值到左边*/

        printf('My favorite num is %d because it is first.\n',num);                   /*调用printf函数,printf()含义是把括号内容打印出来*/

%d是占位符告诉计算机以何种形式输出num的值,打印在何处

        return 0;                                 /*程序的最后一个语句*/

c函数可以给调用方提供(或返回)一个数。目前,可以暂时把该行看成是结束main()函数的要求。

}

运行后编辑器会对代码实行编译生存o文件,然后使用构建,用连接器和o文件链接产生可执行文件exe

2.2简单的程序结构

int main()是函数头

花括号中是函数体

第3章数据和C

3.1示例程序

scanf()函数用于读取键盘的输入,%f说明scanf()要读取用户从键盘输入的浮点数,&weight告诉scanf()把输入的值赋给名为weight的变量。scanf()函数使用&符号表明找到weight变量的地点。

 

 

 %d是整数占位符,%f是浮点数占位符,%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后两位,scanf()函数用于读取键盘的输入。

/*bit(比特)计算机中最小单位

byte(字节)=8bit

kb=1024byte

mb=1024kb*/

3.2变量与常量

有些数据类型在程序使用之前就已经预先设定好,在整个程序运行过程中没有变化,这些称为常量

其他数据类型在程序运行期间可能会改变或被赋值,这些称为变量。

3.3数据类型关键字

int                 //整型

short            //短整型

long             //长整型

unsigned    //正整型

char           //字符数据类型,用于指定字母和其他字符(如#,*,$等),也可以表示较小的整数

float           //单精度浮点数

double      //双精度浮点数

//signed

//void

//表示布尔值(true或false)_Bool

//表示复数_Complex

//表示虚数_Imaginary

位、字节与字

计算机的最小储存单元是位(bit),可以储存0或1

字节(byte)

字(word)

bit(比特)计算机中最小单位

byte(字节)=8bit

kb=1024byte

mb=1024kb

浮点数与整数

整数由没有小数部分,浮点数有

浮点数与整数存储方式不同,浮点数的存储分3个部分,对于3.14159中分为符号(+),小数(0.314159),指数(10^1或E1)3部分,浮点数常用e计数法,3.16x10^6可写为3.16E6

3.4,c语言基本数据类型

3.41

int类型

int类型是有符号的整型,即值可以为正整数,负整数,零。

一般用16位来储存int值,取值范围为—32768(—2^15)到—32767(2^15 —1)

unsigned int(正整数)取值为0到2^16  —1

声明int值

可以分别声明各变量也可以一个变量中声明多个

初始化变量

即为变量赋一个初始值,一般直接在声明中完成

打印int值

占位符%d用于对int格式的值进行代替,但是要确保占位符与值一一对应,这种错误编译器不会捕获

例:int num=1

printf("%d minus %d is %d/n",num,num)

其中遗漏最后一个%d参数,编译器会在系统中选出垃圾词填上

八进制和十六进制

c语言整型常量一般为十进制,0x或0X前缀表示16进制,0前缀表示8进制

使用不同进制是为了方便,不会影响数被储存的方式,因为计算机内部都以2进制进行编码。

显示八进制和十六进制

8进制占位符为%o,16进制占位符为%x

%d  整型int

%ld  长整型long (int)

%lld  长长整型long long (int)

%hd  短整型short int

%u  无符号整型unsigned int

%hu  无符号短整型unsigned short int

%lu  无符号长整形unsigned long int

%llu  无符号长长整型unsigned long long

%f  浮点型float

double比较特殊,它的输入占位符是%lf,输出只能是%f

%c  字符型char

%s  字符串

注:占位符中字母只能小写
int x=100

printf("dec=%d,octal=%o,hex=%x\n"x,x,x)

printf("dec=%d,octal=%#o,hex=%#x\n"x,x,x)

输出结果如下

dec=100,octal=144,hex=64

dec=100,octal=0144,hex=0x64

如果要在八进制和十六进制前显示0和0x前缀,要分别在转换说明(占位符)中加入#

3.42 其他整数类型

short int(简写为short)

long int(long)

long long int(long long)

unsigned int(unsigned)

//用于非负场合,如果16位则取值范围是0到65535而不是-32768到32767,如果使用负数则会导出垃圾数

c语言规定short占用的空间不多于int,long不少于int。

现在计算机的常用设置时long long占64位,long占32位,short占16位,int占16位或32位,实际使用过程中,有些类型之间常有重叠。

通常,代码程序使用的数字都被存储为int类型,八进制和十六进制也被是为int类型,如果值太大,编译器会依次使用unsigned int, long,unsigned long等

如果需要把一个较小的数看成long类型,可以在值的末尾加上L(l),一般使用大写L,其可读性较强,如果用unsigned long long可以5ULL或5LLU 

整数溢出

当整数达到它能表示的最大值时会重新从起点开始,unsigned int超过最大值时会从零开始,而int会从-2147483648开始。当其溢出时,系统不会通知用户,编程时需注意。

注意:在使用printf()函数时,切记检查每个待打印的值都有对应的转换说明,还要检查转换说明的类型是否与待打印值的类型相匹配。

3.43使用字符:char类型

char类型用于存储字符,但是从技术层面来看,char类型是整数类型,因为计算机实际上存储的是整数而不是字符,计算机使用数字编码(一般是ascii码)。

在c语言中,用单引号括起来的单个字符被称为字符常量。编译器一发现'A',就会将其转换成相对应的代码值。单引号必不可少

非打印字符

单引号只使用于字符、数字和标点符号,有些代表行为的字符(如,退格、换行、终端响铃或蜂鸣)。

1,使用ascii

2,使用特殊的符号序列表示一些特殊字符。这些符号序列被称为转义序列。把转义序列赋给字符变量时,必须使用单引号把转义序列括起来。

\a --警报(ANSI C)
\b --退格
\f --换页
\n --换行
\r --回车
\t --水平制表符
\v --垂直制表符
\ --反斜杠(\)
’ --单引号
" --双引号
? --问号
\0oo --八进制值( oo 必须是有效的八进制数,即每个 o 可表示 0 ~7 中的一个数)
\xhh --十六进制( hh 必须是有效的十六进制数,即每个 h 可表示 0 ~f 中的一个数)

\a只会发出蜂鸣不会移动光标,\f会把光标移动到下页开始位置,\n会把光标移动到下一行开始处。

如果打印下面一行内容

gramps,"a \ is a backslash."

printf("gramps,\"\\ is a backslash.\"\n")

对于特殊字符前应加一个转义字符 \

注意:使用ASCII码时,注意数字和数字字符的区别。例如,字符4对应的ASCII码是52。'4'表示字符4,而不是数值4。无论是普通字符还是转义序列,只要是双引号括起来的字符集合,就无需

用单引号括起来。双引号中的字符集合叫做字符串。

打印字符

char ch=C

printf("The code for %c is %d. ")

输出结果:

The code for C is 67

有无符号

有些编译器把char实现为有符号类型,这意味着char可表示的范围是-128~127。而有些C编译器把char实现为无符号类型,那么char可表示的范围是0~255。

signed char表示有符号类型,unsigned char 表示无符号类型。

_Bool类型

1表示true,0表示false

3.46 float,double和long double

计数法,科学计数法,指数计数法(e计数法)

c标准规定,float类型必须至少能表示6位有效数字且取值范围至少是10^-37~10^37。double类型和float类型最小取值范围相同,但至少必须能表示10位有效数字。long double比double精度更高,至少与double类型精度相同。

浮点型常量

浮点常量基本类型:有符号的数字(包括小数点),后面紧跟e或E(数字和e之间不能加空格),最后是一个有符号数表示10的指数。

默认情况下,编译器假定浮点型常量是double类型的精度。储存器使用双精度进行乘法运算,然后将结果截断成float类型的宽度。这样会使运行速度减慢。

在浮点数后加f或F后缀,编译器会将浮点数常量看做float类型,加L或l,会将其看做long double。

打印浮点型

用%f转换说明打印十进制计数法的float和double类型浮点数,用%e打印指数计数法的浮点数。如果系统支持十六进制的浮点数,可用a与A分别代替e与E。打印long double时用%Lf,%Le,%La.。

浮点数的上溢与下溢

计算数目过大超过范围称为上溢出,有结果,但是是垃圾词

计算数目过小时,虽然得到了结果,但是在计算过程中却损失了原末尾有效位上的数字,这个过程叫下溢

还有中特殊的浮点数值,NAN(not a number)。例如给sin()一个大于一的参数,就会返回NAN值,或nan。

浮点数舍入错误

给定一个数加1再减去这个数会是1吗,未必

计算机可能会缺少足够的小说位来运算

复数和虚数类型

float _Complex

float_Imaginary

传递给函数的信息被称为参数。

刷新输出

最初printf()语句把输出发送到一个叫缓冲区的中间缓存区域,然后缓冲区中的内容再不断被发送到屏幕中。c语言明确规定了何时把缓冲区发送到屏幕:缓冲区满,遇到换行字符或需要输入时。(从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区)

旧版编译器遇到scanf()也不会强制刷新缓冲区,程序会停在那里不显示任何内容,等待用户输入数据。这种情况下,可以使用换行符刷新缓冲区。


 

                                                              

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值