我是C ++的新手,这个问题可能很容易为您解答。我无法找到这种语法的实际含义。所以我有:
struct Vec {
double x, y, z;
Vec(double x_=0, double y_=0, double z_=0){ x=x_; y=y_; z=z_; }
};
int w = 1024, h = 768;
Vec cx = Vec(w*.5135/h);
最后一行发生了什么?我正在创建一个Vec类型的新结构,还有什么? 提前谢谢。
答案 0 :(得分:2)
相当于:
Vec cx = Vec(w*0.5135/h);
答案 1 :(得分:2)
这是编写浮点数的简短方法。你可以这两种方式(当然它必须是浮动的两倍)。十进制数分为3部分(不包括符号):
123 . 456
| | \_fractional part
| |
| \_decimal point
|
integer part
当整数部分等于0但小数部分不是:
double x = .123; // the same as writing 0.123
当小数部分等于0但整数部分不是:
double x = 123.; // the same as writing 123.0
*
只是你的标准乘法。您只是将整数w
乘以其整数部分等于0的十进制数.5135
。
答案 2 :(得分:1)
在最后一行中,您通过调用cx
的构造函数Vec
为Vec(double x_=0, double y_=0, double z_=0)
分配了Vec cx = Vec(w*.5135/h);
类型的新构造函数实例。
Vec cx = Vec(w*0.5135/h, 0, 0);
与:
相同0
由于构造函数定义的参数的默认值。
浮点数不必以C ++中的assert(0.5135 == .5135); // True
开头。
w*.5135
所以w
只是整数0.5135
和双Order by
的乘法。