数据类型及长度

char        字符型,占用一个字节

int          整型,通常代表特定机器中整数的自然长度

short       16位

int         16位或32位

long       32位

各编译器可根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long至少为32位,并且short类型不得长于int类型、int类型不得长于long类型。

float        单精度浮点型

double    双精度浮点型

signed与unsigned  用于限定char类型或任何整型。unsigned无符号,总是正值或0,并遵守算术模2n(n次方)定律,其中n是该类型占用的位数。如果char对象占用8位,那么unsiged char类型变量取值范围为0-255,而siged char类型取值范围则为-128-127。

31                  十进制  25-1

037                八进制

0x1F/0X1f      十六进制

31 = 32 - 1 = 25 – 1 = (24 +  23) + ( 22 + 21 + 20)= (24/8) + 7 = 037

           = 24 + (23 + 22 + 21 + 20)   = 16/16 + 15 = 0X1f

后缀L表示long类型,后缀U表示unsiged类型。0XFUL是一个unsiged long类型的常量,对应十进制数15。

一个字符常量是一个整数,用单引号括起,如’x’。字符在机器字符集中数值就是字符常量的值。例如,在ASCII字符集中,字符’O’的值是48。

“hello ””world”      等同 “hello world”

字符串的内部表示使用一个空字符“\0”作为串的结尾,因此,存储字符串的物理存储单元数比括在双引号中的字符数多一个。

枚举是一个常量整值的列表,例如:

enum Boolean{NO,YES};

在没有显式说明的情况下,enum类型中第一个枚举名的值为0,第二个为1,依此类推。

enum months{JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};

FEB的值为2,MAR的值为3。

不同枚举中的名字必须互补相同,同一枚举中不同的名字可以具有相同的值。

相对于#define语句,enum的优势在于常量值可以自动生成。

声明

int lower,upper,step;

char c,line[1000]

int lower;

int upper;

int step;

char c;

char line[1000]             //此形式占用较多空间,但便于向各声明语句中添加注释。

声明变量时并初始化

char esc = ‘\\’;

int i = 0;

int limit = MAXLINE +1;

float eps = 1.0e-5;

如果变量不是自动变量,则只能进行一次初始化操作。

外部变量与静态变量将被初始化为0,未经显式初始化的自动变量的值为未定义值(即无效值)。

任何变量的声明都可以使用const限定符限定,该限定符指定变量的值不能被修改。对数组而言,const限定符指定数组所有元素的值都不能被修改。

const限定符也可配合数组参数使用,它表明函数不能修改数组元素的值。

#include <stdio.h>
#include <stdbool.h>
bool is_leap_year(int year); main(){
bool b1,b2;
b1 = is_leap_year(2000);
b2 = is_leap_year(2001);
printf("%d\n%d",b1,b2);  //1 0
return 0;
} bool is_leap_year(int year){
return (0 == year % 4 && 0 != year % 100) || 0 == year % 400 ? true : false;
}
#include <stdio.h>
int atoi(char s[]); //注意后面的分号 main(){
int i;
i = atoi("1999");
printf("%d",i);
return 0;
} /**一串数字转为相应的数值**/
int atoi(char s[]){
int i;
int n = 0;
for(i=0; s[i] >= '0' && s[i] <= '9'; i++){
n = 10 * n + (s[i] - '0');
}
return n;
}
#include <stdio.h>

int lower(int c){
return c >= 'A' && c <= 'Z' ? c + 'a' - 'A' : c;
} main(){
char unsigned s = 'A';
printf("%d",lower(s));
return 0;
}

注:将字符型转换为整型时,C语言没有指定char类型的变量的符号类型(signed或unsigned)。当一个char类型的值转换为int类型的值时,其结果,在某些机器中,如果char类型值的最左边一位是1,则转换为负整数(进行“符号扩展”),而在另一些机器中,左边可能添加0,值为正整数。

C语言的定义保证了机器的标准打印字符集中的字符不会是负值,因此,在表达式中这些字符正值。但是,在存储在字符变量中的位模式在某些机器中可能是负值,或正值。为保证程序的可移植性,如果要在char类型的变量中存储非字符数据,最好指定signed或unsigned限定符。

一天一点点。。。

重拾C,一天一点点的更多相关文章

  1. 重拾C,一天一点点_2

    类型转换一般来说,如果二元运算符的两个操作数具有不同的类型,较低的类型提升为较高类型,结果为较高类型.表达式由float类型的操作数不会自动转换为double类型.使用float类型主要是为了在使用较 ...

  2. 重拾C

    重拾C,一天一点点_10 来博客园今天刚好两年了,两年前开始学编程. 忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多.这两天调试服务器,遇到不少麻烦. 刚出去溜达了一下,晚上 ...

  3. CSS魔法堂:重拾Border之——更广阔的遐想

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  4. CSS魔法堂:重拾Border之——不仅仅是圆角

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  5. CSS魔法堂:重拾Border之——图片作边框

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  6. CSS魔法堂:重拾Border之——解构Border

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  7. 重拾Blog

    上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...

  8. [linux]重拾linux

    起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...

  9. 重拾qt

    最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...

随机推荐

  1. FVDI Commander products be replaced SVDI tools,really?

    You may have heard that some FVDI Commander products are being replaced by the new SVDI tools. This ...

  2. 【Android 界面效果39】android:inputType问题

    1.  在XML代码中实现比较简单, 直接设置android:inputType="textMultiLine": [mw_shl_code=java,true]<EditT ...

  3. iOS 中的加密方式

    iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ...

  4. java 编程军规

    军规条例军规一:[避免在程序中使用魔鬼数字,必须用有意义的常量来标识.]军规二:[明确方法的功能,一个方法仅完成一个功能.]军规三:[方法参数不能超过5个]军规四:[方法调用尽量不要返回null,取而 ...

  5. HDU 1069 Monkey and Banana (DP)

    Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  6. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

  7. 什么是SMART原则?

    SMART(S=Specific.M=Measurable.A=Attainable.R=Relevant.T=Time-bound)原则即目标管理,目标管理是使经理的工作变被动为主动的一个很好的手段 ...

  8. 推荐5款超实用的.NET性能分析工具 转

    http://www.csdn.net/article/2012-11-23/2812174-5-Good-and-useful-.NET-Profilers

  9. Hadoop YARN配置参数剖析—RM与NM相关参数

    注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) ...

  10. 配置SQL Server 2008 R2 Reporting Services

    记录如何在本地配置SQL Server 2008 R2 Reporting Services,笔者环境为Windows 7 64位 + SQL Server 2008 R2 一.准备工作 其实准备工作 ...