初识C语言

初识C语言

目录

初识C语言

1.选择C语言的理由

2.CPU(中央处理器)

3.C语言的编译

4.程序的输出在屏幕上一闪而过

5.C语言小贴示

6.变量或函数命名规则

7.位、字节和字的区别

8.浮点数异于整形数

9.八进制和十六进制

10.printf()输出打印

11.其他数据类型 

12.可移植类型:stdint.h和inttypes.h

13.浮点数的上溢和下溢

14.const关键字

15.等价交换

16.ctype.h


1.选择C语言的理由

1)自项向下、结构化编程和模块化设计

2)高效性

3)可移植性

2.CPU(中央处理器)

运算单元ALU控制单元CU寄存器组(PC、IR、PSW、DR、通用寄存器等)通过内部总线连接,与外部与系统总线相连。

系统总线:控制总线CB、数据总线DB、地址总线AB。

运算器ALU:在控制器下完成算术和逻辑运算。

数据寄存器DR:暂存ALU的运算结果。

指令寄存器IR:保存当前正在执行的一条指令。当执行一条指令时,先把指令从指令cache存储器(指存)读出,再送到IR中。

程序计数器PC:存储下一条要执行的指令地址。

累加寄存器AC:为ALU提供一个工作区,用来暂存数据。

地址寄存器AR:保存当前CPU访问的内存单元的地址。

3.C语言的编译

c语言编译的整个流程是:源程序,预处理,编译,汇编,链接,可执行文件。

预处理用于将所有的#头文件以及宏定义替换成文件的真正内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。

编译指将经过预处理之后的程序转换成特定汇编代码的过程。

汇编过程将上一步的汇编代码转换成机器码,产生目标文件(.obj)。

链接过程将多个目标文件、启动文件以及所需的库文件合并成一个文件,链接成最终的可执行文件(.exe)。
注:目标文件和可执行文件都由机器语言指令组成。

4.程序的输出在屏幕上一闪而过

某些窗口环境会在单独的窗口运行程序,然后在程序运行结束后自动关闭窗口。

解决方法:getchar();

这行代码会让程序等待击键,窗口会在用户按下一个键后才关闭。

int main()
{
    float weight;
    printf("输入你的体重:");
    scanf("%f",&weight);
    printf("你的体重:");
    return 0;
}

即使加了一行getchar(),屏幕依旧一闪而过。这时需要调用两次getchar()函数:

getchar();

getchar();

getchar()函数读取下一个输入字符,因此程序会等待用户输入。在这种情况下,键入数字后按下enter,实际发送了一个换行符,然后scanf()读取键入的数字。

第一个getchar()读取换行符,第二个getchar()让程序暂停,等待输入。

5.C语言小贴示

#include<stdio.h>的作用就是相当于把stdio.h文件中的所有内容都输入到该行所在的位置。所有的C编译器软件包都提供stdio.h文件。

C程序一定从main()函数开始执行。return语句是一种跳转语句。

变量命名只能由大小写字母、数字和下划线组成。开头不能以数字开头。

变量声明时分配存储空间。

void a(void);    //函数原型,函数声明
int main()
{
    a();         //函数调用
}
void a(void)     //函数定义
{
    语句;
}

6.变量或函数命名规则

1)只能由大小写字母、数字和下划线组成。

2)不能以数字开头。

函数可以采用驼峰命名法

7.位、字节和字的区别

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

字节(byte)是常用的计算机存储单位,几乎对于所有的机器,1字节均为8位、

字(word)是设计计算机时给定的自然存储单位。比如,对于8位的微型计算机,1字长只有8位。字长越大,数据转移就越快,允许的内存访问也更多。

8.浮点数异于整形数

主要是储存方案不同。计算机把浮点数分成小数部分和指数部分,而且分开储存这两部分。

浮点数一般采取e计数法。比如3.16E7=3.16*10^7,2e-8=2*10^-8。

9.八进制和十六进制

十进制:%d

八进制:%o

十六进制:%x

也可

八进制:%#o

十六进制:%#x、%#X

int main()
{
    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);
    return 0;
}

显示

dec=100 ; octal=144 ; hex=64

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

10.printf()输出打印

//常规输出
printf("x = %d",a); 
  
//限定字符位输出,a输出2个字符位,默认靠右对齐
printf("x = %2d",a);     

//限定字符位输出,a输出2个字符位,靠左对齐 
printf("x = %-2d",a); 

//限定字符位输出,a输出2个字符位,自动补0
printf("x = %02d",a);
//解释一下,加入a输出个位数,则在个位数前加个0
//如a=1,则输出x = 01

11.其他数据类型 

打印unsigned int类型的值,使用%u转换说明;

打印long类型的值,使用%ld转换说明;如果系统的int和long大小相同,使用%d就行。

最大的short类型整数小于或等于最大的int类型整数。

最大的long类型整数大于或等于最大的int类型整数。

最大的long long类型整数大于或等于最大的long类型整数。

int类型的宽度要么和short类型相同,要么和long类型相同。

sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。%zd转换说明匹配sizeof的返回类型。

12.可移植类型:stdint.h和inttypes.h

C语言为现有类型创建了更多类型名,这些新的类型名定义在stdint.h头文件中。

为什么有这个函数的出现呢?比如针对不同计算机的int可能是16位、32位或64位。但int32_t一定是32位的有符号整数类型。

例如,int为16位、long为32位的系统会把int32_t作为long的别名。然后,使用int32_t类型编写程序,并包含stdint.h头文件时,编译器会把int或long替换与当前系统匹配的类型。

这种类型别名称为精确宽度整数类型。计算机底层系统可能不支持。

还有一种类型别名是最小宽度类型,在inttypes.h中体现。

例如,inttypes.h中头文件中定义了PRId32字符串宏,代表打印32位有符号值得合适转换说明(如d或l)。

#include<stdio.h>
#include<inttypes.h>
int main()
{
    int32_t me32=45933945;
    
    printf("me32=%" PRId32 "\n",me32);
    return 0;
}

上面代码中,PRId32可以替换成"d"。

printf("me32=%" PRId32 "\n",me32);

printf("me32=%" "d" "\n",me32);

在C语言中,可以把多个连续的字符串组合成一个字符串。上行等效于下行。

printf("me32=%d \n",me32);

13.浮点数的上溢和下溢

浮点数产生上溢时,会赋值给该浮点数变量一个表示无穷大的特定值,打印输出该值为inf或infinity等。

浮点数产生下溢时,会丢失本身末尾有效位上的数值。

14.const关键字

const关键字,用于限定一个变量为只读。

例如:

const double TI=3852.99;
printf(“*%e*\n”,TI);				//*3.852990e+03*
printf(“*%3.1f*\n”,TI);			    //*3853.0*
printf(“*%+4.2f*\n”,TI);			//*+3852.99*
printf(“*%010.2*\n”,TI);			//*0003852.99*

其他:

printf(“%x %X %#x\n”,31,31,31);                                       //1f 1F 0x1f

printf(“**%d**% d**% d**\n”,42,42,-42);                             //**42** 42**-42**

printf(“**%5d**%5.3d**%05d**%05.3d**\n”,6,6,6,6);         //**    6**  006**00006**  006**

再如:

#define PRO “I am superhero.”
printf(“[%10.3s]\n”,PRO);		        //[       I a]
printf(“[%-10.3s]\n”,PRO);		        //[I a       ]

15.等价交换

for(;test;)和while(test)等价。

ch=getchar();
while(ch != ‘\n’)
{
    ...
    ch=getchar();
}
//等同于
While( (ch=getchar()) != ‘\n’ )
{
    ...
}

16.ctype.h

函数名

如果是下列参数时,返回值为真

Isalnum()

字母或数字

Isalpha()

字母

Isblank()

标准的空白字符(空格、水平制表符或换行符)

Isdigit()

数字

Isgraph()

除空格之外的任意可打印字符

Islower()

小写字母

Isprint()

可打印字母

Ispunct()

标点字符(除空格或字母数字字符以外的任何可打印字符)

Isspace()

空白字符(空格、换行符、回车符、水平制表符或垂直制表符)

Isupper()

大写字母

Isxdigit()

十六进制数字符

函数名

行为

tolower()

如果参数是大写字符,该函数返回小写字符;否则,返回原始参数

toupper()

如果参数是小写字符,该函数返回大写字符;否则,返回原始参数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值