欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++结构复习讲解

程序员文章站 2022-07-09 22:22:12
结构:struct,常用来储存某一类型的变量,在cpp文件中。 struct DirLight { vec3 direction; vec3 ambient; vec3 d...

结构:struct,常用来储存某一类型的变量,在cpp文件中。

struct DirLight {

vec3 direction;

vec3 ambient;

vec3 diffuse;

vec3 specular;

};

uniform DirLight dirLight; // 可以通过dirlignt.ambient访问其中的某一个属性

结构适合于将某一类属性归类,却又不需要创建类的情况下。比如创建一个灯的所有属性,却又不需要创建一个灯的类。我们可以通过灯.属性来调用它。

Halt:退出程序。

#include 中的 exit(0)方法可以立即退出程序。

Switch:(长时间不用忘记了)

switch(color)

{

caseCOLOR_BLACK:

std::cout<< "Black";

break;

caseCOLOR_WHITE:

std::cout<< "White";

break;

default:

std::cout<< "Unknown";

break;

}

static_cast(x) 是错的,static_cast(y)只能实现基本类型的强转。

Java,break是跳出整个循环,continue是跳出本次循环。

生成随机数:

#include // for rand() and srand()

intmain()

{

srand(5323);// 设置一个初始值,只被调用一次(0——32767)

std::cout<< rand()<< "\t"; // 反复调用,返回新的随机数

// 多次运行将返回相同的序列(如果srand()中的初始值相同的话)。如果想要返回不同的序列,我们可以传入一个时间值,因为时间是总是不同的。

srand(static_cast(time(0)));

return0;

}

在给定的范围内生成随机数:(调用getRandomNumber(1,6)生成1-6之间的随机数)

intgetRandomNumber(intmin,intmax)

{

staticconstdoublefraction= 1.0/ (static_cast(RAND_MAX)+ 1.0);// static used for efficiency, so we only calculate this value once

// evenly distribute the random number across our range

returnmin+ static_cast((max- min+ 1)* (rand()* fraction));

}

请考虑用户如何滥用程序,尤其是在文本输入方面。对于每个文本输入点,请考虑:提取失败了吗?用户可以输入比预期更多的输入吗?用户可以输入无意义的输入吗?用户能否溢出输入?

所以,需要测试修复用户输入:

if(std::cin.fail())// 如果用户输入失败

{

std::cin.clear();// 清空输入缓冲

std::cin.ignore(32767,'\n');// 移除失败输入

}