Visual Studio 2015更新3. C ++ 11 \ C ++ 14。
int
:
constexpr int ci1 {50};
constexpr int ci2 {500};
char c1 {ci1}; // OK
char c2 {ci2}; // compilation error
即。 通用和统一初始化可以检查编译模式中的值(从int
到char
)。 Bjarne Stroustrup 在他的书中提到了这个案例。
我希望情况 double
到int
,但它不适用于Visual Studio 2015 Update 3:
constexpr double cd {4.0};
int i1 {cd}; // compilation error
错误讯息:
C2397转换为' double'到' int'需要缩小范围 转化
它是正确的行为(对于我的第二个代码示例)还是特定于Visual Studio?
答案 0 :(得分:1)
php
到<form id="MaterialUpload" action="#" method="post" enctype='multipart/form- data' class="form-horizontal form-row-seperated">
<input type="file" name="fileUpload" class="form-control" />
// javascript posting it via ajax
var formData = new FormData(this);
$.ajax({
url: '../CONTROLLER/MaterialAPI.php?CreateCategory=true=',
type: 'POST',
data: formData,
mimeType:"multipart/form-data",
contentType: false,
cache: false,
processData:false,
success: function(data, textStatus, jqXHR)
{
$(".auctncr").html(data);
},
// php
echo $_FILES['fileUpload']['tmp_name'];
转换始终被视为缩小,这就是Bjarne Stroustrup在他的书中为此类转换创建double
实现的原因。
答案 1 :(得分:0)
从double到int的转换正在缩小,因为双精度代表有理数。 (0.5)由于没有必要精确(1.可能是1.000000001),转换会丢失信息。
对此类转换使用显式强制转换,一切都会正常,或者不使用通用初始化。