PHP程序员的C学习之路2 - 第一章, C语言的一些基础
2014-03-25 14:49
453 查看
第一章, C语言的一些基础
(1) 基本数据类型
在学习PHP的时候你可能不用知道什么是数据类型, 就算PHP有很多数据类型如:
“字符串类型”, “整数类型”,
“浮点型类型”等, 但是PHP的数据类型跟C语言的数据类型还是有很大差别的. 为什么这样说? 因为PHP把C语言的数据类型抽象化了. 下面我们想来学习一下C语言的数据类型吧.
PHP是弱类型语言, 而C语言是强类型语言, 也就是说如果你想使用C语言的变量, 那么你首先要知道变量的类型. 而不像PHP那样变量可以是任何的类型. 另外如果你想使用C语言的变量, 那么你必须先声明这个变量, 然后才可以使用. 如下:
int ivar;
ivar = 10;
如果你没有声明而直接使用变量, 编译会不通过, 如下是错误的:
ivar = 10;
因为PHP不用声明变量就能使用, 所以PHP程序员写C程序时要特别注意声明变量.
C语言声明的方式是:
类型 变量名;
如:
int ivar;
//定义一个名为ivar的整型变量
char cvar;//定义一个名为cvar的字符型变量
float fvar;//定义一个名为fvar的浮点型变量
double dvar1,
dvar2, dvar3;//定义3个双精度类型的变量
long lvar1,
lvar2, lvar3;//定义3个长整型的变量
从上面看到C语言还可以使用类型 变量名, 变量名, 变量名…;这种声明方式.
好了, 看完C语言的声明方式, 现在我们来学习一下C语言的基本数据类型吧.
C语言的基本数据类型还不是很多, 有以下的几种:
char: 字符型类型, 占8位(一个字节)
int: 整型类型, 占32位(32位平台下)
short: 短整型类型, 占16位
long: 长整型类型, 占32位(32位平台下)
float: 单精度浮点型, 占32位
double: 双精度浮点型, 占64位
基本上C语言就只有这几个基本数据类型了, 上面所说到的位就是计算机里面的最小单元, 一个位只能是0或者1.
8位就像这样:[1][1][1][1][1][1][1][1]. 而能够保存的最大数值为20 +
21 + 22 + 23 + 24 + 25 + 26 + 27 = 255.所以一个字符型的变量可以保存0
– 255的整数.
另外因为C语言的数字是有正数和负数的, 所以C语言有两个专门来描述正负的关键字unsigned和signed, unsigned表示数字是没符号的(就是正数). signed表示有符号(可正可负), 而不加unsigned的都默认为有符号的. 所以上面所说的类型都是有符号的, 因为符号需要用一个位来表示, 所以8位大小的数据只能使用7位来保存数据, 一个位表示符号了. 也就是说char只能保存-128
~ 127的整数, 而加上unsigned可以把符号位都用作为保存数据, 就有8个数据位, 所以能够保存0
~ 255的整数.
上面说到的类型中, 只有float和double能够保持小数. 其他的都只能保存整数.
下面我们来写个程序来看看C语言的基本数据类型吧:
#include
<stdio.h>
int main()
{
int ivar;
float fvar;
long lvar;
ivar =
10;
fvar =
10.00;
lvar =
10;
printf("ivar: %d, fvar: %f, lvar: %ld\n", ivar, fvar, lvar);
return 0;
}
输出如下:
另外基本数据类型的最大和最小值都在<limits.h>这个头文件(头文件以后会说)中, 所以先了解这些类型的最大最小值的话可以看看这个头文件.
(2) 常量
PHP中也有常量, 常量通常说的就是不能改变的量, 如10,
12.50等, 这些量是不能改变的, 所以被称为常量. 本来常量知道这些就足够了, 不过C语言有一些特殊的表示方法, 所以还是要介绍一下的.
如:
[1]以L或者l结尾的整数表示是一个长整型, 像10L,
29l等都表示是一个长整型类型的整数;
[2]以u或者U结尾的整数表示为一个无符号的整数如10u,
29U等都表示是一个无符号的整数;
[3]另外U和L可以一起使用UL表示无符号的长整型类型;
[4]如果想表示小数, 需要有小数点, 像10.25, 表示的是double类型的数如果想要表示float类型的话, 就要加上f或者F作为后缀, 像10.25F;
[5]以0作为前缀的整数表示8进制的数, 如037.
[6]以0x或0X作为前缀的整数表示16进制的数, 如0x37.
[7]还有字符常量, 如'a',
'b', 'c'等等.
注意: 另外要说明一下的是PHP的字符串跟C的字符串不一样,
PHP的字符串可以这样表示:
$str = 'Hello World';
或者
$str = "Hello World";
但是C语言只能是这样表示:
char *str;
str = "Hello World";
C语言的字符串是以双引号来包含的, 而C语言的单引号只能表示一个字符, 不能用于字符串的表示, 这点PHP程序员一定要注意.
另外C语言的字符串实际上就是一个字符数组, 这个以后会说到.
(3) C语言的运算
因为PHP是类C语言的, 所以C语言的运算跟PHP的运算相差不大, 如果会PHP的运算的话, 基本上不用看C的运算了. 如果不会的话可以看看PHP的运算那章, 另外要说明一下的是,
C语言是没有 “===” 这个运算符的, 这个全等符号是PHP独有的, 所以不能用于C语言.
(4) 类型转换
PHP中有类型转换,
C语言也有类型转换, 而且也挺像的, 如,
PHP代码:
$ivar = "12";
$ivar = (int)$ivar;
虽然C语言也有类似的类型转换, 不过却没有PHP的灵活, 因为PHP可以把字符串转换成数字, 但是C语言不行,
C语言的类型转换只能用于基本类型. 如,
C代码:
int ivar
= 12;
long lvar
= (long)ivar;
但不能这样:
char *svar
= "12";
long lvar
= (long)svar;
另外精度比较高的数转换成精度比较低的数会出现数据丢失的现象. 如,
#include <stdio.h>
int main()
{
unsigned
long lvar = 0x7FFFFFFF;
unsigned
short cvar = (unsigned short)lvar;
printf("lvar: %x, cvar: %x\n", lvar, cvar);
return 0;
}
输出如下:
可以看出cvar已经丢失了16位的数据, 所以我们一般不要把高精度的数转换成低精度的数.
(5) C语言的流控制
C语言的流控制跟PHP的基本上一样, 不过C语言多了一个goto语句, 所以我只说goto语句了.
goto语句的作用是跳转到某一处, 如:
goto here就会跳转到here这个标记出继续执行代码. 要使用goto语句, 你得先设置一个标记, 设置标记很简单, 使用如下的语句:
代码
here:
代码
goto here;
这样当执行到goto here这里的时候, 就会跳转到here那里继续执行. 所以我们可以使用goto来模拟一个无限循环:
#include <stdio.h>
#include <windows.h>
int main()
{
forever:
printf("Hello World\n");
Sleep(1000);
goto forever;
return 0;
}
上面的代码是打印Hello World并且睡眠1秒, 然后跳转到forever处继续执行, 这样就可以无限的循环下去.
好了, C语言的基础就说到这里了, 下节要讲的是函数, 敬请留意.
(1) 基本数据类型
在学习PHP的时候你可能不用知道什么是数据类型, 就算PHP有很多数据类型如:
“字符串类型”, “整数类型”,
“浮点型类型”等, 但是PHP的数据类型跟C语言的数据类型还是有很大差别的. 为什么这样说? 因为PHP把C语言的数据类型抽象化了. 下面我们想来学习一下C语言的数据类型吧.
PHP是弱类型语言, 而C语言是强类型语言, 也就是说如果你想使用C语言的变量, 那么你首先要知道变量的类型. 而不像PHP那样变量可以是任何的类型. 另外如果你想使用C语言的变量, 那么你必须先声明这个变量, 然后才可以使用. 如下:
int ivar;
ivar = 10;
如果你没有声明而直接使用变量, 编译会不通过, 如下是错误的:
ivar = 10;
因为PHP不用声明变量就能使用, 所以PHP程序员写C程序时要特别注意声明变量.
C语言声明的方式是:
类型 变量名;
如:
int ivar;
//定义一个名为ivar的整型变量
char cvar;//定义一个名为cvar的字符型变量
float fvar;//定义一个名为fvar的浮点型变量
double dvar1,
dvar2, dvar3;//定义3个双精度类型的变量
long lvar1,
lvar2, lvar3;//定义3个长整型的变量
从上面看到C语言还可以使用类型 变量名, 变量名, 变量名…;这种声明方式.
好了, 看完C语言的声明方式, 现在我们来学习一下C语言的基本数据类型吧.
C语言的基本数据类型还不是很多, 有以下的几种:
char: 字符型类型, 占8位(一个字节)
int: 整型类型, 占32位(32位平台下)
short: 短整型类型, 占16位
long: 长整型类型, 占32位(32位平台下)
float: 单精度浮点型, 占32位
double: 双精度浮点型, 占64位
基本上C语言就只有这几个基本数据类型了, 上面所说到的位就是计算机里面的最小单元, 一个位只能是0或者1.
8位就像这样:[1][1][1][1][1][1][1][1]. 而能够保存的最大数值为20 +
21 + 22 + 23 + 24 + 25 + 26 + 27 = 255.所以一个字符型的变量可以保存0
– 255的整数.
另外因为C语言的数字是有正数和负数的, 所以C语言有两个专门来描述正负的关键字unsigned和signed, unsigned表示数字是没符号的(就是正数). signed表示有符号(可正可负), 而不加unsigned的都默认为有符号的. 所以上面所说的类型都是有符号的, 因为符号需要用一个位来表示, 所以8位大小的数据只能使用7位来保存数据, 一个位表示符号了. 也就是说char只能保存-128
~ 127的整数, 而加上unsigned可以把符号位都用作为保存数据, 就有8个数据位, 所以能够保存0
~ 255的整数.
上面说到的类型中, 只有float和double能够保持小数. 其他的都只能保存整数.
下面我们来写个程序来看看C语言的基本数据类型吧:
#include
<stdio.h>
int main()
{
int ivar;
float fvar;
long lvar;
ivar =
10;
fvar =
10.00;
lvar =
10;
printf("ivar: %d, fvar: %f, lvar: %ld\n", ivar, fvar, lvar);
return 0;
}
输出如下:
另外基本数据类型的最大和最小值都在<limits.h>这个头文件(头文件以后会说)中, 所以先了解这些类型的最大最小值的话可以看看这个头文件.
(2) 常量
PHP中也有常量, 常量通常说的就是不能改变的量, 如10,
12.50等, 这些量是不能改变的, 所以被称为常量. 本来常量知道这些就足够了, 不过C语言有一些特殊的表示方法, 所以还是要介绍一下的.
如:
[1]以L或者l结尾的整数表示是一个长整型, 像10L,
29l等都表示是一个长整型类型的整数;
[2]以u或者U结尾的整数表示为一个无符号的整数如10u,
29U等都表示是一个无符号的整数;
[3]另外U和L可以一起使用UL表示无符号的长整型类型;
[4]如果想表示小数, 需要有小数点, 像10.25, 表示的是double类型的数如果想要表示float类型的话, 就要加上f或者F作为后缀, 像10.25F;
[5]以0作为前缀的整数表示8进制的数, 如037.
[6]以0x或0X作为前缀的整数表示16进制的数, 如0x37.
[7]还有字符常量, 如'a',
'b', 'c'等等.
注意: 另外要说明一下的是PHP的字符串跟C的字符串不一样,
PHP的字符串可以这样表示:
$str = 'Hello World';
或者
$str = "Hello World";
但是C语言只能是这样表示:
char *str;
str = "Hello World";
C语言的字符串是以双引号来包含的, 而C语言的单引号只能表示一个字符, 不能用于字符串的表示, 这点PHP程序员一定要注意.
另外C语言的字符串实际上就是一个字符数组, 这个以后会说到.
(3) C语言的运算
因为PHP是类C语言的, 所以C语言的运算跟PHP的运算相差不大, 如果会PHP的运算的话, 基本上不用看C的运算了. 如果不会的话可以看看PHP的运算那章, 另外要说明一下的是,
C语言是没有 “===” 这个运算符的, 这个全等符号是PHP独有的, 所以不能用于C语言.
(4) 类型转换
PHP中有类型转换,
C语言也有类型转换, 而且也挺像的, 如,
PHP代码:
$ivar = "12";
$ivar = (int)$ivar;
虽然C语言也有类似的类型转换, 不过却没有PHP的灵活, 因为PHP可以把字符串转换成数字, 但是C语言不行,
C语言的类型转换只能用于基本类型. 如,
C代码:
int ivar
= 12;
long lvar
= (long)ivar;
但不能这样:
char *svar
= "12";
long lvar
= (long)svar;
另外精度比较高的数转换成精度比较低的数会出现数据丢失的现象. 如,
#include <stdio.h>
int main()
{
unsigned
long lvar = 0x7FFFFFFF;
unsigned
short cvar = (unsigned short)lvar;
printf("lvar: %x, cvar: %x\n", lvar, cvar);
return 0;
}
输出如下:
可以看出cvar已经丢失了16位的数据, 所以我们一般不要把高精度的数转换成低精度的数.
(5) C语言的流控制
C语言的流控制跟PHP的基本上一样, 不过C语言多了一个goto语句, 所以我只说goto语句了.
goto语句的作用是跳转到某一处, 如:
goto here就会跳转到here这个标记出继续执行代码. 要使用goto语句, 你得先设置一个标记, 设置标记很简单, 使用如下的语句:
代码
here:
代码
goto here;
这样当执行到goto here这里的时候, 就会跳转到here那里继续执行. 所以我们可以使用goto来模拟一个无限循环:
#include <stdio.h>
#include <windows.h>
int main()
{
forever:
printf("Hello World\n");
Sleep(1000);
goto forever;
return 0;
}
上面的代码是打印Hello World并且睡眠1秒, 然后跳转到forever处继续执行, 这样就可以无限的循环下去.
好了, C语言的基础就说到这里了, 下节要讲的是函数, 敬请留意.
相关文章推荐
- PHP程序员的C学习之路4 - 第三章, C语言的函数
- 新手学习PHP的一些基础知识
- PHP程序员的C学习之路3 - 第二章, const关键字和常量
- php学习第一章:PHP基础语法(三)数据结构与算法:2、单向链表
- PHP基础学习函数总结和一些aoache和Nysql数据库总结
- 学习PHP的一些记录(基础教程)
- php学习第一章:PHP基础语法(三)数据结构与算法:1、线性表、队列、栈
- 新手学习PHP的一些基础知识分享
- PHP学习入门的一些基础知识(菜鸟必看)
- php程序员学习javascript:第一章:javascript基本语法:数据类型
- C语言学习之路之一-----------C语言基础
- Java基础知识学习之路-02-第一章-Java语言概述与开发环境
- php学习第一章:PHP基础语法(二)之PHP运算
- PHP 学习之路 基础
- 成为Java顶尖程序员 ,看这11本书就够了 以下是我推荐给Java开发者们的一些值得一看的好书。但是这些书里面并没有Java基础、Java教程之类的书,不是我不推荐,而是离我自己学习 Java基础技
- php程序员学C/C++之学习系列-【C基础】
- php学习第一章:PHP基础语法(一)之PHP数据类型与PHP常量
- 【php学习之路】php基础语法
- 一个初学者的C语言学习之路——关于原反补码的一些认识
- 新手必看的PHP学习入门的一些基础知识