草庐IT

CHAR_BIT

全部标签

c++ - C 中指向 char 的指针的默认值

让我们有变量字符*s;我知道如果声明在全局范围内,它的值应该是0;如果它是在本地范围内声明的,它的值是未定义的(虽然它可能是0)。我在测试中遇到了一个问题,听起来像这样“定义为指针的值是多少char*sa)空b)空字符串c)未定义我真的很困惑我应该选择什么答案,因为如果它是在全局范围内声明的,那么该值将为空(我猜)。如果它是在本地范围内声明的,未定义的(虽然当我尝试它时它为零),并且当我尝试cout它时,没有打印任何内容(没有段错误,为什么?),这意味着它是一个空字符串(或者cout真的很棒吗?)。 最佳答案 你引用的问题很可能是由

c++ - 如何防止从 char 数组到 bool 的隐式转换

structFoo{voidsetBar(boolbar_){bar=bar_;}boolbar;};intmain(){Foof;f.setBar("true");}由于类型转换,上述代码编译成功,即使在需要bool的地方传递了一个char数组。是否有可能导致这段代码编译失败?(首选C++03解决方案,因为我工作场所的编译器很古老。)我查看了StackOverflow上的以下相关问题,但它们并没有完全解决这个问题。PreventingimplicitconversioninC++,Whydoesthecompilerchoosebooloverstringforimplicittyp

c++ - std::optional 实现为 union vs char[]/aligned_storage

在阅读GCC对std::optional的实现时,我注意到了一些有趣的事情。我知道boost::optional实现如下:templateclassoptional{//...private:boolhas_value_;aligned_storagestorage_;}但是libstdc++和libc++(以及Abseil)都像这样实现它们的可选类型:templateclassoptional{//...private:structempty_byte{};union{empty_byteempty_;Tvalue_;};boolhas_value_;}在我看来,它们在功能上是相同的

c++ - "operator char*"问题

下面的代码预计会打印“kevin”但是,它正在打印垃圾值。我已经检查了调试器。“operatorchar*”调用返回的指针无效。有什么想法吗?classWrapper{private:char*_data;public:Wrapper(constchar*input){intlength=strlen(input)+1;_data=newchar[length];strcpy_s(_data,length,input);}~Wrapper(){delete[]_data;}operatorchar*(){return_data;}};intmain(){char*username=Wr

c++ - char[9][9] 的初始值设定项太多

这个问题在这里已经有了答案:Singlequotesvs.doublequotesinCorC++(14个答案)关闭3年前。但问题是,我声明的char数组中的初始值设定项数量正好。chardash[9][9]={{"1","2","3","4","5","6","7","8","9"},{"a","b","c","d","e","f","g","h","i"},{"q","w","e","r","t","y","u","i","o"},{"9","8","7","6","5","4","3","2","1"},{"i","h","g","f","e","d","c","b","a"},

c++ - 算法 C/C++ : Fastest way to compute (2^n)%d with a n and d 32 or 64 bit integers

我正在寻找一种算法,允许我使用n和d32或64位整数计算(2^n)%d>.问题是即使使用多精度库也不可能将2^n存储在内存中,但也许存在计算(2^n)%d的技巧仅使用32位或64位整数。非常感谢。 最佳答案 看看ModularExponentiationalgorithm.这个想法不是计算2^n。相反,您可以在加电时多次降低模数d。Thatkeepsthenumbersmall.将方法与ExponentiationbySquaring结合起来,并且您可以仅在O(log(n))步内计算(2^n)%d。这是一个小例子:2^130%123

c++ - char vs wchar_t何时使用哪种数据类型

我想了解char和wchar_t之间的区别吗?我知道wchar_t使用更多字节,但是我可以得到一个清晰的示例来区分何时使用char与wchar_t的区别 最佳答案 从根本上讲,当编码的符号数量超过wchar_t可以包含的数量时,请使用char。背景char类型具有足够的容量来容纳ASCII字符集中的任何字符(编码)。问题在于,许多语言需要的编码比ASCII帐户所需的更多。因此,需要更多而不是127种可能的编码。某些语言具有256种以上的可能编码。char类型不能保证范围大于256。因此需要新的数据类型。wchar_t(又称宽字符)为

c++ - 您如何处理标准库中的 signed char -> int 问题?

这是我工作中长期存在的问题,我意识到我仍然没有好的解决方案......C天真地为一个int定义了它所有的字符测试函数:intisspace(intch);但是char通常是带符号的,并且完整的字符通常不适合int或用于字符串的任何单个存储单元******。而这些函数已经成为当前C++函数和方法的逻辑模板,为当前的标准库奠定了基础。事实上,他们仍然受到支持,afaict。因此,如果您使用isspace(*pchar),您最终可能会遇到符号扩展问题。它们很难被发现,因此根据我的经验,它们很难防范。同样,因为isspace()和它的同类都采用整数,并且因为字符的实际宽度通常在没有字符串分析的

c++ - 指向 const char 与 char 数组与 std::string 的指针

这里有两行代码constchar*s1="test";chars2[]="test";两行代码具有相同的行为,所以我看不出我应该更喜欢s1而不是s2还是相反。除了s1和s2,还有使用std::string的方式。我认为使用std::string的方式是最优雅的。在查看其他代码时,我经常看到人们使用constchar*或chars[]。因此,我现在的问题是,什么时候应该使用constchar*s1或chars[]或std::string?有什么区别,在什么情况下我应该使用哪种方法? 最佳答案 POINTERS--------charc

c++ - 获取 char 的 ascii 值,C++ 中的 Ord 等价物

在delphi中存在一个名为Ord的函数which返回序号类型表达式的序号值。例如,您可以通过这种方式检索字符的Ascii值Ord('A')返回65Ord('a')返回97在C++中,我必须使用哪个函数来获取Char的ascii值? 最佳答案 一个简单的inta=c;应该可以工作,其中c是一个char。 关于c++-获取char的ascii值,C++中的Ord等价物,我们在StackOverflow上找到一个类似的问题: https://stackoverfl