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. Github使用之git回退到某个历史版本

    1. 查找历史版本 使用git log命令查看所有的历史版本,获取你git的某个历史版本的id 假设查到历史版本的id是fae6966548e3ae76cfa7f38a461c438cf75ba965 ...

  2. Android Intent 用法全面总结(转载)

    1. [代码]调用拨号程序 1 2 3 4 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent intent = ...

  3. ADO.NET数据库编程

    ADO.NET数据库编程 1.ADO.NET的相关概念. Microsoft的新一代技术,是ADO组件的后继者. 主要目的是在.NET Framework平台存取数据. 提供一致的对象模型,可以存取和 ...

  4. 基于nginx的token认证

    Nginx 的 token 认证是基于集成了 nginx+lua 的 openresty 来实现的. 环境: centos 7 部署方式: 增量部署(不影响原 nginx 版本) 版本: openre ...

  5. centos7 禁用每次sudo 需要输入密码

    安装完centos7后,默认没有启用sudo,首先应该是对sudo进行设置.sudo的作用就是使当前非root用户在使用没有权限的命令 时,直接在命令前加入sudo,在输入自己当前用户的密码就可以完成 ...

  6. Bootstrap组件之下拉菜单

    .dropdown--设置父元素为下拉菜单组件,向下弹出子菜单: .dropup--设置父元素为下拉菜单组件,向上弹出子菜单: .dropdown-toggle--设置button为下拉菜单切换but ...

  7. Hadoop2.0中单点故障解决方案分析

    Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题, ...

  8. 面试STAR法则

    昨天投了几家公司的简历,A公司还没看简历,B公司没有通过简历,另外的后说(其实只投了这两家),B公司最终给了蛮中肯的回复: 虽然,一开始看到这样的结果,有些失落,仔细看过回复后,有些不屑和好奇.百度了 ...

  9. Mycat安装及测试分片总结

    1.安装jdk1.72.连接实际mysql数据库 用命令行工具或图形化客户端,连接mysql,创建DEMO所用三个分片数据库:(默认schema.xml中的配置需要三个库) CREATE databa ...

  10. 巨蟒python全栈开发-第6天 is&==

    1.小数据池 2.id 3.decode和encode 小数据池 #小数据池:不要死磕就行#python为了简化,搞出来的一个东西 ID (1)# id()函数可以帮我们查看一个变量的内存地址# a= ...