iOS开发基础之C语言

2020-01-14 16:58:08王振洲


// main.c
// C语言基础
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
#include <stdio.h>
#include "Message.h"
int main(int argc, const char * argv[]) {
 showMessage();
 return 0;
}

可以发现程序仍然可以正常运行,但是我们思考一个问题:如果我们不分成两个文件,直接在主函数文件中包含message.c是否也可以正常运行呢?答案是否定的,原因是由于编译生成的两个文件main.obj和 message.obj在链接时会发现main.obj中已经有message.obj中定义的showMessage函数,抛出“标示符重复”的错误。

iOS开发基础之C语言

数据类型

iOS开发基础之C语言

类型修饰符

从上图我们可以清晰的看到C语言的数据类型结构,当然对于这些类型我们还有一些类型修饰符(或叫限定符)

short 短型 ,修饰int、double
long 长型,修饰int、double
signed 有符号型,修饰int、char
unsigned 无符号型,修饰int、char

对于类型修饰符需要做如下解释

这些修饰符经常用来修饰int型,在修饰int类型时int可以省略;

short和long会改变int型的长度,不同编译器项长度不相同,但是short长度不大于int,int长度不大于long;
signed、unsigned不改变类型长度,仅仅表示最高位是否为符号位,unsigned表示大于等于0的正数;

当然有时候我们必须清楚每个类型占用的字节,下表列出常用数据类型占用的存储空间

iOS开发基础之C语言

注意:char类型是最小的数据类型单位,在任何类型的编译器下都是占用1个字节,char类型的变量赋值可以直接赋值等于某个字符也可以赋值为整数(对应的ASCII值);可以使用两个long来修饰一个整形(就是经常使用的8字节的整形long long),但是两个long不能修饰double而且也不存在两个short,否则编译警告;一个浮点型常量如果后面加上f编译器认为它是float类型,否则认为double类型,例如10.0是double类型,10.0f是float类型。