我想学ruby以后开发网站,但ruby是高级语言,隐藏了许多底层的东西,因此先熟悉c语言

首先c程序的文件名是以.c结尾的

c程序的格式:

  第一行#include<stdio.h>

    #是一个预处理标准,用来对文本进行预处理操作,表示该行代码要最先进行处理,在编译代码之前运行

    include是一个指令表示将<>中的文件读入

    stdio.h表示标准输入输出头文件(头文件就好像一本书的目录,读者通过目录可以方便的查

阅到需要的内容,stdio.h声明了标准输入输出函数,假如要用到标准输入输出函数时就要添加此头

文件

    

第一个c语言程序:  

#include<stdio.h>
int main()
{
  printf("I like c language");
  return 0;
}

第一行的作用是编译器编译之前将头文件stdio.h中的所有内容读到当前程序的第一行,由于stdio.h声明了所有输入输出函数,因此下面就直接可以调用printf函数了

main() 代表一个函数,翻译成中文就是主函数,在每一个c程序中首先编译的都会是主函数,()是固定格式,{}也是固定格式,其中包含的部分叫做函数块或者函数体

每个程序中都需要注明返回的类型,此处就是int,就是程序执行完成后要向操作系统返回一个整数

mian函数与其他函数有着本质的区别:一般函数都是由其他函数调用或者激活,比如printf函数就

是由mian函数激活,但main函数是在程序开始时自动执行

printf是print format的缩写形式,I like c language是main函数传递给printf函数的信息,printf函数接受到此信息后将此信息输出到屏幕上

return 0 表示mian函数向操作系统返回一个0值,一般函数执行完成后都会返回一个执行状态结果,0表示正常,非0表示异常

c语言中的注释:

  //  单行注释

  /*....*/  多行注释

语句结束符  ;  只要行中包含了;就代表语句结束了  例如 ;   语句中的空格一般忽略不计

例如: x=a+b; 或者 x = a  +  b; 都是一样的,建议使用第一种,意思就是将a+b的值赋值给x

#include<stdio.h>
int main()
{
  {
    printf("I like c language");
    printf("I like c language");
    return 0;
  }
}

{}中包含的部分代表的就是一个块,外面的{}包含的是函数块,里面{}的块中包含了多条语句(两条printf语句),精确地说是一条复合语句

表达式:x=c=a+b   意思就是将a+b的值赋值给c然后赋值给x

#include<stdio.h>
int main()
{
  int a=1,b=2,c=3,x=0;
  x=c=a+b;

    printf("%d",x); 
  return 0;
}

%d 代表输出的是一个整数,对应着后面的x,执行此程序得到3的结果

运算符:  

#include<stdio.h>
int main()
{
  printf("%d",5%2);
  return 0;
}

5%2 代表取模,就是5除以2取它的余数,将这个值放入前面的“”中输出

运算优先级:

  printf ("%d",1+1*2+3);

上面的运算顺序:1*2+1+3,

  printf("%d",(1+1)*(2+3));

上面的运算顺序:(1+1)的值乘以(2+3)的值,跟做小学运算一样

= 在c语言中是赋值运算符

#include<stdio.h>
int main()
{
  int x=0;
  x+=1;
  printf("%d",x);
  return 0;
}

x+=1  表示将x的值加1,然后再将此值赋值给x, 相反的是x-=1

类似的还有:x*=2, x/=2,x%=2,x%=1+2 (先求1+2的值)

自加:x++ 将x的值加1

自减:x--  将x的值减1

#include<stdio.h>
int main()
{
  int x=2;
  printf("%d",x--);
  return 0;
}

  上面的程序会先将x的值输出至屏幕,然后再减1,如果要取得减1后的结果可使用下面的写法

#include<stdio.h>
int main()
{
  int x=2;
  printf("%d\n",x--);
  printf("%d\n",x);

  return 0;

}

\n代表换行

上面的程序也可写成这样:

#include<stdio.h>
int main()
{
  int x=2;

  x--;
  printf("%d",x);
  return 0;
}

说了这么多感觉有点不对,我怎么执行上面这些程序文件的?我也是这么想的

我是在linux系统中,使用vim编辑文件,例如: vim 1.c   gcc程序编译文件     编译命令:gcc 1.c,会出现一个a.out的文件   执行此文件:./a.out

也可以使用gcc 1.c -o hello  自定义文件名

步入C编程的第一天的更多相关文章

  1. UE4蓝图编程的第一步

    认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色 ...

  2. 为什么qt成为c++界面编程的第一选择

    为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...

  3. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  4. 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...

  5. Rx编程的第一步是将native对象转换为monad对象

    Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.

  6. 王译潇20162314 实验报告三plus结对编程四则运算第一阶段

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...

  7. 20165219 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  8. 为什么 qt 成为 c++ 界面编程的第一选择?

    为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...

  9. 关于delphi XE7中的动态数组和并行编程(第一部分)

    本文引自:http://www.danieleteti.it/category/embarcadero/delphi-xe7-embarcadero/ 并行编程库是delphi XE7中引进的最受期待 ...

随机推荐

  1. Tomcat、MySQL的安装与配置

    JAVA环境配置 下载安装jdk(Java Development Kit) 配置安装环境 右键计算机——>属性——>高级系统设置——>环境变量——>新建 变量名:  JAVA ...

  2. Android减少布局层次--有关Activity根视图DecorView的思考

    1 Android应用图层 一直觉得有关DecorView还是有些问题没有搞清楚,今天在看了一点有关SurfaceFlinger的内容以后,顿时突发奇想,想到之前的问题,之前的思考是: 虽然可以将De ...

  3. Activiti 流程部署方式 activi 动态部署(高级源代码篇)

    Activiti的流程 部署方式有非常多种方式,我们能够依据activit工作流引擎提供的ap方式进行部署. 当然了实际需求决定你要使用哪一种api操作,后面的总结具体介绍了使用场景. 以下看一下部署 ...

  4. 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现

    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 import java.math.BigInteger; import java.util.ArrayLi ...

  5. windows pipe

    管道分为 匿名管道 和 命名管道 . 1.匿名管道仅仅能在父子进程间进行通信.不能在网络间通信,并且传输数据是单向的.仅仅能一端写,还有一端读. 2.命令管道能够在随意进程间通信.通信是双向的,随意一 ...

  6. Android二维码工具zxing使用

    二维码在我们生活中随处可见.在我眼里简直能够用"泛滥"来形容啦.那怎样在我们Android项目中扫描识别二维码或生成二维码图片呢? 我们通常使用的开源框架是zxing.在githu ...

  7. hibernater-validator jar包冲突的问题

    在引用hibernater-validator jar包时一直抛出异常,在引用带有该包的项目,或者同时在一个项目中使用该包和validator包都会抛出以下异常 最后发现是在Eclipse环境下,不能 ...

  8. 编写自己的UDTF

    1. UDTF介绍 UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求. 2. 编写自 ...

  9. css3 - 动态伪类

    动态伪类分为以下几种: 1. hover(经过) 2. active(点击后) 3. focus(聚焦) - input专用 4. visited(访问后) 使用:

  10. java实验8-Java输入输出流

    1 读写文件 [实验目的] (1)掌握文本文件的读写方法. (2)掌握随机文件的读写方法. (3)掌握InputStream.OutputStream抽象类的基本使用. (4)掌握FileInputS ...