首页 > 移动平台 > 详细

魏兆辉的IOS基础学习笔记之一 C语言基础-01

时间:2015-11-11 23:46:19      阅读:370      评论:0      收藏:0      [点我收藏+]

(一)基础入门

1. 编译和链接

将程序转化为机器可执行的代码,C语言分为三个步骤:

A. 预编译。程序首先会交给预处理器,预处理器执行以#开头的指令,然后给程序添加指令,或者修改指令。

B. 编译。修改后的程序进入编译器,编译器会把程序翻译成机器指令(也就是目标代码),但是这样的程序还是不能执行的。

C. 链接。链接器把由编译器产生的目标代码和其他所需的代码整合到一起,这些附加代码包括程序中用到的库函数。这样就产生了完全可执行的程序。

2. main函数中的exit和return

在main函数中,以两者结尾是一样的。都是终止程序执行,并且向操作系统返回0。

不过exit需要引入stdlib.h库函数。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
printf("Hello world");
exit(0);
//return 0;
}

3. %i和%d

在printf中使用时,两者没有区别,但是在scanf中,%d只能接受10进制的整数。

但是%i还可以接受八进制和十六进制的整数。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i ;
scanf_s("%i",&i);
printf("%d",i);
}

技术分享

4. scanf函数

scanf本质上是一种“模式匹配”函数。

但是在Visual Studio中调用scanf函数时会给出这样的提示:The function may be unsafe.Please using scanf_s instead.

当用户从键盘输入时,程序并没有读取输入,而是把用户的输入放在一个隐藏的缓冲区中,由scanf来读取。因此如果用户输入了多余的字符,scanf无法彻底完成模式匹配,scanf就会把字符放回缓冲区供后续scanf函数的读取。

 

(二)运算符

1、逻辑运算符 || &&

 

      如果运算符左边的子表达式决定了最终的结果,则右边的子表达式不会计算

 

      例如:

 

      if(d != 0 && n/d > 0) {

 

            /* average is greater than 0 */

 

       }

 

      if(p == NULL || *p == ‘\0‘) {

 

            /* no string */

 

       }

 

      在第一个例子中,如果没有短路行为,一旦d=0,则右边的表达式会被0除--系统可能会崩溃;第二个例子中,如果p是空指针,则右边的表达式引用一个空地址,从而可能导致系统崩溃。

 


 

2、C语言实参求值顺序

 

      C标准对实参的求值顺序并没有统一规定,但是多数系统对函数参数的求值顺序是自右向左。

 

      i = 3; printf("%d, %d\n", i, i++);

 

      输出结果是:4,3

 


 

3、i++ 与 ++i运算符

 

      i = 3; j = (++i)+(++i)+(++i);

 

      printf("j = %d, i = %d\n", j, i);

 

      输出结果为:j = 16, i = 6(gcc编译器)

 

       不同编译器,结果可能不一样。计算机在计算j = (a+b)+(c+d)+(e+f)时,先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(e+f)=j;计算机中只有一个i,计算第二个i时,第一个i已改变。

 

        int i = 1, j = 1, k;
        i = (i++) + (++i);
        k = (j++) + (++j);
        printf("i = %d,j=%d, k=%d \n", i, j, k); 
       输出结果为:i = 5, j = 3, k = 4(gcc编译器)

 


 

魏兆辉的IOS基础学习笔记之一 C语言基础-01

原文:http://www.cnblogs.com/normalwzh/p/4957449.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!