1序言:

  1与Java、C#等高级语言相比,C语言使用简单但是也非常重要更容易出错,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入系统编程尤为明显。

  今天是本人复习C语言课程的第一课,主要重新记录一下C语言的基础知识,这节课涉及到C语言的结构、变量以及类型、输入输出、条件判断以及循环知识。

2知识点:

  2.1 C语言的结构

     2.1.1 通常情况下C语言程序是由:

       1.相关的代码注释,使用/* ··· */可注释单行或多行,也可以用//单行注释(C99标准);

       2.定义相关变量,全局(静态)变量或局部(静态)变量;

       3.具有返回值int的main入口函数;

       4.如果使用外部函数则需要引入头文件;

         5.可有可无返回值其他函数方法;

       6.使用代码块表示程序的相关判断;

       下面来看下代码;

#include <stdio.h>                   #调用系统函数则需要使用此头文件

/* 入口函数 */
int main(void) #程序入口函数main,此时参数值为void代表未传参数
{ #main入口函数从这里开始,代码块开始处
int data; #此data局部变量未初始化且后面未赋值如果直接输出其值是未知的
static int cdata; #未初始化局部静态变量为0存储与bass,以初始化的存储于data
char* p = "Hello World!\n"; #定义局部变量p并赋值
printf(p); #调用系统函数,此函数在stdio.h中
int flag = Show(p); #调用具有返回类型为int的自定义函数Show(char* p)
return 0; #该方法具有返回值int
} #main代码块结束处 /* Show函数
参数:char* p
返回值:int
*/
int Show(char* p)
{
printf(p);
return 1;
}, //全局变量
int golbal_data; #未初始化的变量(存储bss)为0,已初始化的全局变量存储在data

  

  2.2 变量以及类型

    2.2.1 数据类型

      看如下图:

      其中[]中括号代表可有可无;int类型范围取值是:-2^(32-1)至2^(32-1)-1,因此类推其他也是这样计算;int、float、double都是表示最少位数,因为跟操作系统位数有关,比如long intzai 32位操作系统下,跟int类型占用字节数是一样的,但是在64位下就不同,long int是8个字节的。当然还有一些类型比如iso c99扩展类型:int8_t总是8位,int16_t总是16位。可用sizeof(int)、sizeof(long)打印出其在当前平台下的占用字节数。一般尽量使用int类型:效率比较高;double精度够;尽量少用unsigned.

printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));

    2.2.2 常量表示

      2.2.2.1 常量分为:数值常量、字符常量、字符串常量、符号常量,看如下代码:

const int i = 123;      #代表整型常量
const int i = 033; #代表整型常量使用八进制表示
const int i = 0x1; #使用十六进制表示
const float f = 1.2222f;#单精度浮点型
const double b = 123.1234567; #双精度浮点型
const char c = 'a'; #字符常量
const char cn = '\\'; #斜杠转义

      2.2.2.1 看如下代码:

pirntf("%d\n",100);                    #整型直接表示
pirntf("%o\n",100); #八进制表示
pirntf("%x\n",100); #十六进制表示
pirntf("%f\n",1.1111f); #单精度表示,单精度常量用f表示
pirntf("%f\n",1.11111111L); #双精度用单精度表示只显示小数点6位数,常量后面使用L表示双精度

  2.3 格式化输出

    2.3.1 使用占位符输出,看如下代码:

int a = 100;
float f = 1.123456f;
double d = 1.12345678L;
char c = 'A'; printf("%d\n",a); #使用%d输出整型a;%u:表示无符号十进制;%ld代表长整型。其中前面可以加上数量比如%2d代表2位;
printf("%f\n",f); #使用%f输出浮点型f;%2f代表2位浮点型;%2.3f代表2位整数3位小数;%-2.3f同理前面不过且向左靠齐,小数点不够补0对齐。
printf("%c\n",c); #使用%c输出字符c;

    具体可以看看这边文章

  2.4 条件判断

    2.4.1 运算符

      2.4.1.1 通常情况下我们常用的运算符优先级:

        一级:(),[],.,->是按左至右顺序;

        二级:-(负号),++,--,*(取值),&,!,~单目运算符是按右至左,这里特别注意++运算符跟--运算符有前置跟后置区分会影响结果;sizeof表达式;

        三级:*,/,%是按左至右计算;

        四级:+,-是按左至右计算;

        五级:<<,>>是按左至右计算;

        六级:>,>=,<,<=是按左至右计算;

        七级:==,!=是按左至右计算;

        还有一些这里就不一一列举了比如复合运算符,大家可以看看这边文章这比较详细了。

    2.4.2 条件判断

      2.4.2.1 常见条件判断,看如下几种:

int a = 0;

#单if判断
if(a == 0)
{
//当a=0操作
} #if-else判断
if(a==0)
{
//当a等于0时操作
}
else
{
//当a不等于0时操作
} #if-elseif-else判断,中间可以有多个else if,最后的else也可有可无
if(a == 0)
{
#当a等于0时操作
}
else if(a == 1)
{
#当a等于1时操作
}



else
{
#前面条件不符合运行这,相当于默认操作
}

      2.4.2.3 创建类型的逻辑判断,看如下:

int a = 0;
int b = 1;
int c = 2; if(a == 0 || b == 2) #因为是逻辑或会产生短路(一个为真结果就真不会再去判断b是否等于2)
{
#操作
} if(a == 0 && b == 2) #因为是逻辑与也会产生短路(1个为假时结果就为假不会再判断b是否等于2)
{
#操作
} if(a == 0 || b == 2 && c == 1) #因为&&运算符比较高,此相当于a == 0 || 0这样结果为真
{
#操作
}

  

      2.4.2.3 switch条件

switch(variable)
{
case A:
//program code
break;
case B:
//program code
break;
case C:
//program code
break; #这个break语句一般情况都会有,当然不排除case one,case two都执行

default: #养成习惯最后的default一定要有即使没语句;
break;
} #这个variable关心最多的是什么类型,这里说下:int,char,short int,long int是不是就只是这几个呢,答案是:经过查看下ANSI它是只有一句话整型。也问了一下他人也只是说是能转换成整型的就可以,至于byte不知道怎么试,倒是补上

  2.5 循环语句

    2.5.1 for循环,看如下代码:

int a = 10;
int b = 0;
for(b=0;b < a; b++)
{
printf("%d\n",b)
}

  

    2.5.2 while 以及do-while(),看如下代码:

#上面的for语句可以改写
int a = 10;
int b = 0;
while(b < a)
{
printf("%d\n",b);
} #也可以使用do-while()语句,但是结果却不一样因为这个语句先执行在判断所以它比前面的循环多了一次如下
int a = 10;
int b = 0;
do
{
printf("%d\n",b);
}while(b < a)

这节课的C语言基础就先到这里!

第一课 C语言简明教程的更多相关文章

  1. YAML语言简明教程

    编程免不了要写配置文件,如果你还在用xml/ini/json,就有点过时了,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAM ...

  2. 第一课 T语言关键字(版本TC5.0)

    关键字 TC综合开发工具的语法里包含了大量的关键字,而且对TC综合开发工具支持的关键字都做了亮色处理,以便大家在写脚本的时候容易区分. 关键字在使用的时候,都有特定的作用,不能作为变量名.函数名等等使 ...

  3. [原创]零基础R语言教程---第一课---认识R语言

    教程的录制的确是折腾了一番,一连录了二十多遍,有时候激动的说错了字,有时候不知道下一句说啥.. 不过好在第一课已经搞定了,哈哈. 虽然内容现在看起来还有点简单, 不过牛b也是一个过程嘛. 我会坚持下去 ...

  4. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  5. [原创]零基础R语言教程---第二课---R语言入门

    这节教程简单描述了R语言中常用的数据类型, 向量,字符串,矩阵,列表,数据框,以及附带了一个小例子 对于这节课所附带的例子需要做下列补充: 1.这个例子面向于对整列的数据进行预测 2.如果你需要求单行 ...

  6. 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL

    内容简介 1.课程大纲 2.第三部分第一课: SDL开发游戏之安装SDL 3.第三部分第二课预告: SDL开发游戏之创建窗口和画布 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会 ...

  7. 【C语言探索之旅】 开宗明义及第一课:什么是编程?

    内容简介 1.课程大纲 2.第一部分第一课:什么是编程? 3.第一部分第二课预告:工欲善其事,必先利其器 ​ 课程大纲 不知道为什么,一直对C语言有一种很深厚的“情怀”(类似老罗对锤子手机的那种),说 ...

  8. 基于R语言的结构方程:lavaan简明教程 [中文翻译版]

    lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...

  9. C++自学教程第一课——你好世界,我是柠檬鲸。

    C++系列教程现在在自己学校的一个博客平台发布,几个朋友一起搭建的 [C++基础教程系列](https://blog.ytmaxoj.org/cpp_basic_liuary-0/) 下面是原来的正文 ...

随机推荐

  1. Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)

    http://darksleep.com/player/JavaAndUnsignedTypes.html —————————————————————————————————————————————— ...

  2. Control character in cookie value or attribute

    在cookie中添加中文导致静态页面打不开, (1)先清除缓存 (2)使用escape()函数对中文进行编码,获取的时候在对中文进行解码unescape(). cookie.Set("sto ...

  3. 【BZOJ】3401: [Usaco2009 Mar]Look Up 仰望(单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3401 还能更裸一些吗.. 维护一个递减的单调栈 #include <cstdio> #i ...

  4. php缓存技术基础知识

    普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...

  5. 隐式意图调用系统自带组件的各种Uri总结

    调用系统应用解析(必需要加各自使用的权限)  android intent 隐式意图和显示意图(activity跳转) 显示意图要求必须知道被激活组件的包和class 隐式意图仅仅须要知道跳转acti ...

  6. vue生成图片验证码

    最近做项目接触Vue,前端生成验证码.原理其实很简单,首先是生成随机数,然后用canvas绘制. 网上有一些现成的资料,没必要重复造轮子,我是在他们基础上完善了父组件,简化了子组件的调用: ident ...

  7. java关键字及含义

    http://blog.csdn.net/hfmbook/article/details/7634385

  8. AVA 8 :从永久区(PermGen)到元空间(Metaspace)

    你注意到了吗?JDK 8早期可访问版本已经提供下载了,java 开发人员可以使用java 8 提供的新的语言和运行特性来做一些实验.其中一个特性就是完全的移除永久代(Permanent Generat ...

  9. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试

    问题: 你想要测试app中的非android部分. 解决方案: 可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件. 讨论: ADT插件只支持集成测试,并 ...

  10. RadioButton ---- 样式效果切换

    \res\drawable\radio_button_bg.xml <?xml version="1.0" encoding="utf-8"?> & ...