自问自答学习c语言(1)

 

整理学习过程和文档,每个blog10个问题。

问题1: 为什么分低级语言,高级语言之分。

 机器指令: 00000010 machine instruction

机器语言: 00000010 00001010 指令的集合;型号不同的机器,机器语言不同

进化为-》

符号语言:ADD A,B   symbolic language,需要软件把这些符号转化为机器语言,这个过程叫汇编assemble, 因此符号语言也叫assemble language.贴近计算机,型号不同的机器,汇编语言不同,又叫低级语言。只限专业人士使用。

再进化为-》》

高级语言: 不依赖于具体机器,并且符合人类的语言习惯。 比如打印 printf("................");同样需要翻译为机器语言,叫compile.高级语言的一句往往对应多条机器指令。

问题2:高级语言的主要分类。

主要分面向对象和面向过程的。c为面向过程的,c++为面向对象的。

问题3:c语言简要历史

1973贝尔实验室发明c,并改写unix. 1983出了个标准, 1989出了个标准,1999出了个标准。

问题4: 为什么加#include <stdio.h>

c语言不提供输入输出语句,内存操作语句等,这些都是由编译系统所提供的库函数实现的

#include <stdio.h> 此句表示从存放c编译系统的子目录中查找stdio.h文件,并包含,从而可以调用相应的输入输出语句。

问题5:c语言为什么经常用来编写系统软件。

能实现汇编的大部分功能,可直接访问物理地址。

问题6: 最简的main函数以及为什么这样写?

int main()

{

   return 0;

}
int 为c99建议加上的; 设计时肯定会这样设计, 返回0表示成功,成功只有一样,返回非0表示失败,失败的原因可以有很多比如返回1,返回-1,返回2,是这种设计思想。

 

问题7 为什么对函数声明?

直接编译下面的代码会报c3861错误 identifier not found

法1 把声明去掉注释;法2 把定义提前;

同样道理,

#include <stdio.h>
int main()
{
    printf("Please input two numbers, seperated by space \n");
    int a,b;
    // int myMax(int num1,int num2);// 
    scanf("%d %d",&a,&b);
    int c = myMax(a,b);
    printf("the max number between %d and %d is %d",a,b,c);
    return 0;
}
int myMax(int num1, int num2)
{
    int maxNum;
    maxNum = num1>=num2?num1:num2;
    return maxNum;
}

问题8 为什么有链接这一步?
.c源文件编译生成二进制.obj文件,但是不能执行,不同的.c文件生成自己的.obj,显然需要link所有的obj文件成为一个exe文件; 即使一个源文件也需要和编译系统的函数库链接。

问题9 有哪些常量?

(1)想到最简单的常量就是数字了; 如 1, 55, 50.2, 78.34e4, 43.22E3
(2)字符常量: 普通字符'1', 'a', '4','\n' 注意只是一个形状像数字4的图像字符,其表示方法为ASCII码,没有字符'44'.  '\033' or '\x1B'代表ASCII码为27的字符,即ESC控制符。
(3)字符串常量: “hello world”
(4) #define PI 3.1415926

问题10 #define PI 3.1415926与const double PI = 3.1415926;区别?
一个是变量,一个是符号常量;一个占内存,一个不占内存;一个有类型,一个没有类型,一个一直存在,一个预编译后符号被替代。



你可能感兴趣的:(c,汇编,input,exe,语言,Numbers)