Bool
C语言(或C++)里本身没有bool这种布尔类型。有些编译器可以识别,这是因为编译器自己定义了bool类型,比如:#define bool int。
C语言里,一般用整形变量来实现布尔类型变量的功能。当用条件语句,如if,进行判断时,值为0时,返回false,其它都返回true。
可以这么实现 enum BOOL {FALSE = 0, TRUE = !FALSE};
Linux
不支持while(true),但支持while(1),和bool也是有一定关系。
typedef struct tagPOINT{
BYTE b;
BYTE g;
BYTE r;
} POINT; 当定义变量时,如:struct POINT in; 会有警告,去掉struct变为 POINT in;
循环中char 类型的循环读取解决方法:
int i =0;
char tmp, ch;//ch是需要的最终结果
while((tmp = getchar()) != '\n')
{
i++;
if(i = 1) ch = tmp;
}
总结:scanf() 在按回车时,会残留一个字符\n。scanf()和getchar()函数是从输入流缓冲区中读取的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字符后,留下字符\n,这样第二次的读入函数直接从缓冲区把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以(测试这个,没通过,情况是一个循环中反复输入一个char变量,用列出方式解决了)。
随机获取随机数(VC 6.0)
c语言版本:
#include<time.h>
void main()
{
int randomNumber;
srand(time(NULL)); //因为要以时间为轴作为种子
randomNumber = rand()%9; //表示产生0~9的随机数
}
c++语言版本:
#include <iostream>
#include <time.h>
using namespace std;
#define RANGE 100 //产生一个在0~100之间的数
int main(){
srand((unsigned)time(NULL));//srand()函数产生一个以当前时间开始的随机种子
cout << rand()%RANGE << endl;
return 0;
}
解释说明:
rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果第一次调用rand()之前没有调用srand(),那么系统会自动调用srand()。而使用种子相同的数,调用srand()会导致相同的随机数序列被生成。srand()则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应地,若将srand((unsigned) time(NULL));改为srand(CONSTANT_NUMBER)(CONSTANT_NUMBER为任意一个常量),则无论何时运行或运行多少次,得到的"随机数"都会是一组固定的序列,因此srand生成的随机数是伪随机数。
1.rand()
原型:int rand(void);
rand()是真正的随机数产生器,返回从srand(seed)中指定的seed-RAND_MAX[0x7FF]之间均匀分布的伪随机整数。即[ seed, RAND_MAX]。
2.srand()
原型:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。