写在前面

C语言可以称得上是高级语言中的低级语言,接下来一段时间,我会写一下文章关于c语言,把它的神秘面纱一 一揭开。下面主要是c语言的C语言编译过程及数据类型

源文件编译过程

  • 为了使计算机能执行高级语言源程序,必须先用一种称为“编译程序”的软件,把源程序(.c)翻译成二进制形式的“目标程序”(.obj),然后将该目标程序与系统的函数库和其他目标程序连接起来,形成可执行的目标程序(.exe)

    例如,编辑后得到一个源程序文件f.c,然后在进行编译时再将源程序文件 f.c 输入,经过编译得到目标程序文件 f.obj,再将目标程序文件 f.obj 输入内存,与系统提供的库函数等连接,得到可执行的目标程序文件 f.exe,最后把 f.exe 调入内存并使之运行。

数据类型

整数类型

6种整型变量

  • [signed] int 有符号基本整型
  • unsigned int 无符号基本整型
  • [signed] short [int] 有符号短整型
  • unsigned short [int] 无符号短整型
  • [signed] long [int] 有符号长整型
  • unsigned long [int] 无符号长整型

    区别在于是否有符号位,无符号类型在正数部分比有符号多一倍

实数(浮点数)

表示方法

  • 十进制小数形式
  • 指数形式。如123e3,e前必须有数字,后面必须为整数

3种实型变量

  • float 单精度
  • double 双精度
  • long double 长双精度

字符变量

字符变量类型

  • char

字符数据在内存中的存储

将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中

char转为整数型

有些系统*如 pdp,Vax-11,turboc * 将字符变量中的最高位作为符号位,也就是将字符处理成带符号的整数,即signed char型。它的取值范围是-128~127。如果使用ascii码为0~127间的字符,由于字节中最高位为0,因此用%d输出时,输出一个正整数。如果使用ascii码为128~255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。例如:

  char c=130;
printf(“%d”, c);

得到-126。如果不想按有符号处理,可以将字符变量定义为 unsigned char 类型, 这时其取值范围是 0~255。signed char 和 unsigned char 的含义及用法与 signed int 和unsigned int 相仿, 但它只有一个字节。

字符串与字符区别

c 规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符‘\0’作为字符串结束标志。‘\0’是一个ASCII码为0的字符,从ascii代码表中可以看到ascii码为0的字符是“空操作字符”,即它不引起任何控制动作,也不是一个可显示的字符。如果有一个字符串“CHINA”,实际上在内存中是

C H I N A \0

它的长度不是5个字符,而是6个字符,最后一个字符为‘\0’。但在输出时不输出‘\0’

字符串表示

如果想将一个字符串存放在变量中,以便保存,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。

各类数值型数据的转换图

C语言编译过程及数据类型的更多相关文章

  1. C语言编译过程以及gcc编译参数

    1.1       C语言编译过程,gcc参数简介 1.1.1          C语言编译过程 一.gcc - o a a.c -o:指定文件输出名字 二.C语言编译的过程: 1.1.1       ...

  2. 转 C语言编译过程简介

    C语言编译过程简介 C语言编译过程简介 刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上.现在找了个机会将C ...

  3. GCC 使用-C语言编译过程

    任何一种高级语言,要想在机器上执行,必须翻译为机器能读懂的机器语言.编译器就相当于翻译官,将高级语言翻译为机器语言. GCC 最初只用了编译 C 语言程序,全称是 GNU C Compiler.后来扩 ...

  4. Go 语言编译过程

    走进Golang之编译器原理_大愚Talk-CSDN博客 https://blog.csdn.net/hel12he/article/details/103061921 go编译器 - 知乎 http ...

  5. go语言编译过程概述

    go语言编译过程概述 总结自<go语言设计与实现> 名词解释: 中间代码 中间代码是编译器或者虚拟机使用的语言,它可以来帮助我们分析计算机程序.在编译过程中,编译器会在将源代码转换到机器码 ...

  6. C语言编译过程

    GCC编译C源码有四个步骤: 预处理-----> 编译 ----> 汇编 ----> 链接 一. 编译和链接的流程 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在 ...

  7. C语言编译过程详解

    前言 C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程. 编写hello world C程序: // hello.c #include ...

  8. C语言编译过程(转)

    内容摘要 : C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识.硬件知识.工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问 ...

  9. C语言基础(21)-C语言编译过程及GCC参数简介

    任何C语言的编译过程可分为以下三部分: 一.预编译 在C语言中,以#开头的语句又叫预编译指令.预编译主要做以下两件事情: 1.将#include包含的头文件做简单的文本替换: 2.将代码中的注释删除. ...

随机推荐

  1. 阿里云服务器(Windows)如何下载文件

    背景:公司只有我一个技术,在我之前还有一个老技术,属于兼职状态,为了尽快熟悉公司网站及app项目情况,我联系了老技术,请他尽快将代码发给我,他说代码文件过大,问我能不能连上服务器下载.百度了很多,都不 ...

  2. [日推荐] 『Streeter』极乐商店邀你一起来尬舞啊!-store.dreawer.com

    你听的舞蹈有哪些?Jazz?Poppin?Hiphop?现代舞?民族舞?... 今天推荐一款小程序『Streeter』,几乎包含所有舞蹈视频,偷偷学好了,邀请你来尬舞啊 Streeter 这个Logo ...

  3. HttpResponseMessage获取请求响应体内容

    问题描述 使用httpClient获取的HttpResponseMessage类型的response,直接对其toString()获取的是请求的响应头,并没有获取响应体的内容 解决办法 HttpRes ...

  4. Quartz总结

    前言 最近项目中有使用到Quartz,得空便总结总结,顺便记录一下这种设计模式,毕竟"好记性不如烂笔头". 搭建 pom文件: <dependency> <gro ...

  5. 奇货商城重构——webpack自动化工程

    近几年,前端各种框架工具层出不穷,从两三年前还是一个jQuery搞定全站,到之后requirejs/seajs,node,gulp/webpack,Angular/React/Vue,RN/weex的 ...

  6. 【Linux】ssh免密登录

    一.ssh免密配置 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168. ...

  7. [2014-12-29]使用Enum位模式进行多重状态(或权限)管理

    前言 对于Enum在AspNet Mvc中的应用,我之前提到一种扩展,如何在 Asp.net Mvc 开发过程中更好的使用Enum.这里将介绍另一种更好的使用Enum的方法. Enum定义 以一个代表 ...

  8. DispatcherTimer和Timer(计时器)

    System.Windows.Threading.DispatcherTimer dTime;        System.Timers.Timer timer;        public Main ...

  9. 说说 DWRUtil

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp27 说说 DWRUtil 比如我们从服务器端获得了一个citylist的数 ...

  10. angularJS+Ionic移动端图片上传的解决办法

    前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有 ...