草庐IT

INT_OPERATION

全部标签

c++ - 为什么编译器允许 string string 而不允许 int int?

我只是想检查编译器是否允许类型名称作为变量名称。当我尝试intint;报错说errorC2632:'int'followedby'int'isillegal但当我尝试过#includeusingnamespacestd;intmain(){stringstring;}它没有给出任何错误。string和int都是数据类型。为什么编译器允许string而不允许int?编辑:包括更新。编辑:有些人说int不是一个类。在那种情况下,为什么允许下行。inta(10);它的工作方式类似于类的构造函数。 最佳答案 string不是C++reser

C++ 在 for 循环中声明 int

有一段时间没有使用C++。我一直依赖我的Java编译器来进行优化。在C++中执行for循环的最优化方法是什么?还是现在使用现代编译器都一样?在“过去”,情况有所不同。for(inti=1;i或inti;for(i=1;i或inti=1;for(;i在C中也是一样吗?编辑:好吧,压倒性的共识是使用第一种情况,并让编译器根据需要对其进行优化。 最佳答案 我想说像这样的琐碎事情可能已经被编译器优化了,你不应该担心它们。第一个选项最易读,因此您应该使用它。编辑:添加其他答案所说的内容,还有一个区别是,如果您在循环初始值设定项中声明变量,它将

c++ - 使用连续无符号整数列表初始化 std::vector<unsigned int>

我想用一种特殊的方法来初始化一个std::vector这在我用作引用的C++书籍中有所描述(如果重要的话,UlrichBreymann的德语书籍'DerC++Programmer')。在那本书中有一个关于STL序列类型的部分,特别提到了list,vector和deque.在本节中,他写道,这种序列类型有两个特殊的构造函数,即如果X指的是这样一种类型,X(n,t)//createsasequencewithncopiesoftX(i,j)//createsasequencefromtheelementsoftheinterval[i,j)我想在unsignedint的间隔内使用第二个,即

外国钥匙说“无效”应该是int?

我正在构建一个问答站点,到目前为止,我有两个表(问题和答案)我需要答案表的ID字段成为问题表中的外键,因此我可以有多个与一个问题链接的答案。当我不将无效的php代码放置时,无法正常工作?这是我的桌子:createtableanswers(a_idintnotnullauto_increment,answervarchar(100)notnull,primarykey(a_id));createtablequestions(q_idintnotnullauto_increment,questionvarchar(100)notnull,a_idint,primarykey(q_id),forei

c++ - 如何强制 pow(float, int) 返回 float

重载函数floatpow(floatbase,intiexp)在C++11中被移除,现在pow返回一个double。在我的程序中,我正在计算很多这些(单精度),我对最有效的方法很感兴趣。是否有一些具有上述签名的特殊函数(在标准库或任何其他函数中)?如果不是,在任何其他操作(这将转换所有其他内容)之前将pow的结果显式转换为float是否更好(就单精度性能而言)转换成double)或者将iexp转换成float并使用重载函数floatpow(floatbase,floatexp)?编辑:为什么我需要float而不使用double?主要原因是RAM——我需要数十或数百GB,因此这种减少是巨

c++ - 最令人烦恼的解析阻止了类内初始化 std::vector<int>

这个问题在这里已经有了答案:Whycan'tmemberinitializersuseparentheses?(2个答案)关闭4个月前。C++11允许类内初始化:structFoo{std::vectorv{3};//vectorof3emptystrings};如果我们想在类中初始化一个intsvector,我们会得到其他东西:structFoo{std::vectorv{3};//vectorofoneelementwithvalue3};这个问题好像是语言的限制,asdiscussedinpreviousquestions.但是,如果这不是类内初始化,我们将能够使用圆括号而不是大

c++ - 为什么我应该更喜欢类中的 static constexpr int 而不是类级整数常量的枚举?

C++17更新:staticconstexpr变量是隐式内联,因此不需要外部定义。原始问题:假设我有一个常量列表,例如structCls{staticconstexprintN=32;staticconstexprintM=64;};这当然建议我为这些添加定义以避免可能发生的ODR使用问题,因此我需要:constexprintCls::N;constexprintCls::M;为什么应该我更喜欢这个structCls{enum:int{N=32,M=64};};这让我免于ODR使用的麻烦,因为N和M更真实地只是常量,而不是对象本身(如果这是标题,那就更重要了-only)并且更短。我可以

c++ - 为什么 std::tuple<int> 不能简单复制?

内置thisonlinecompiler,以下代码:#include#include#includeintmain(){std::cout>::value>::value>::value>::value输出:0000我在VisualStudio2015中得到了相同的结果。为什么会这样?POD类型的std::tuple,更不用说简单的std::pair,是否有正当理由不能被简单复制?我假设它们的实现提供了一些自定义赋值运算符,但它们与编译器生成的默认版本有何不同? 最佳答案 就琐碎的可复制性而言,对失败的原因是标准不要求复制/移动赋值

c++ - 解析一个 int(x) 参数

这是一个带有一个int参数的简单函数:voidf(intx){}f(42);这是另一个带有一个int参数的函数:voidg(int(x)){}g(42);现在让我们将x定义为一个类型:typedefintx;voidh(int(x)){}h(42);//warning:passingargument1of‘h’makespointerfromintegerwithoutacast(这是我用gcc4.8.2观察到的行为)解析器作者如何处理这种情况?似乎经典管道Lexer->Parser->SemanticChecker->...在这里不起作用。 最佳答案

c++ - 编译器错误 C4430 : missing type specifier - int assumed

这个问题在这里已经有了答案:Resolvebuilderrorsduetocirculardependencyamongstclasses(12个答案)关闭8年前。我有这个错误:“错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-int”使用此代码示例://A.h#include"B.h"classA{B*b;..};//B.h#include"A.h"classB{A*a;//errorerrorC4430:missingtypespecifier-intassumed.};