小编msc*_*msc的帖子

sizeof void指针

为什么是sizeof无效指针2

c void-pointers

19
推荐指数
2
解决办法
5万
查看次数

是否可以使用位域数组?

我很想知道,是否可以使用位字段数组?喜欢:

struct st
{
  unsigned int i[5]: 4;
}; 
Run Code Online (Sandbox Code Playgroud)

c c++ arrays struct bit-fields

19
推荐指数
3
解决办法
1万
查看次数

为什么默认参数后允许参数包?

也许我错过了一些明显的东西,但是下面的编译和运行,我不知道为什么.我知道这一点,但在下面的示例中,参数包的位置和默认参数是相反的.它是否违反了默认参数必须最后出现的规则?参数包不能具有默认值.

#include <iostream>
#include <string>
#include <tuple>

template<typename ... Ts>
struct Test
{
    int i;
    std::string str;

    Test(int _i = 0, Ts&& ... _ts)
        :
          i(_i),
          str(std::get<0>(std::forward_as_tuple(std::forward<Ts>(_ts)...)))
    {}
};

int main()
{
    Test<std::string> t(1, "huh??");
    std::cout << "t.i = " << t.i << ", t.str = " << t.str << "\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这产生了

t.i = 1, t.str = huh??
Run Code Online (Sandbox Code Playgroud)

c++ default-arguments c++11 c++14

19
推荐指数
3
解决办法
2284
查看次数

签名字符范围

为什么符号字符的范围是-128127,但不-127128

c

17
推荐指数
3
解决办法
3万
查看次数

'strcpy'和'strcpy_s'之间的区别?

当我尝试使用strcpy复制字符串时,它给了我一个编译错误.

error C4996 'strcpy': This function or variable may be unsafe.
Run Code Online (Sandbox Code Playgroud)

考虑strcpy_s改用.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.

strcpy和之间有什么区别strcpy_s

c++ windows visual-c++

17
推荐指数
1
解决办法
3万
查看次数

我们可以在声明中的任何位置放置"typedef"说明符吗?

typedef说明符的语法:

typedef <existing_name> <alias_name>
Run Code Online (Sandbox Code Playgroud)

例如:

typedef long unsigned int Int;
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但是,如果我typedef在宣言中的任何地方放置,像这样:

long unsigned typedef int Int;
Run Code Online (Sandbox Code Playgroud)

然后,它也工作正常.

为什么?我们typedef可以在宣言中放置任何地方吗?

c c++ typedef language-lawyer storage-class-specifier

17
推荐指数
2
解决办法
415
查看次数

#if定义的MACRO是否相当于#ifdef MACRO?

我有代码,我想有两种模式,debugverbose.我在我的头文件中定义它们,

#define verbose TRUE
#define debug TRUE
Run Code Online (Sandbox Code Playgroud)

到目前为止,在我的代码中,我刚刚使用过

#if(debug)
  //code
#endif
Run Code Online (Sandbox Code Playgroud)

但使用起来更合适

#ifdef debug
  // code
#endif
Run Code Online (Sandbox Code Playgroud)

我读了一些关于预处理器宏的内容,但当时没有意义.所以,我有疑问,#if defined MACRO相当于#ifdef MACRO?哪个更好地启用/禁用特定代码段?

c macros c-preprocessor

16
推荐指数
3
解决办法
6369
查看次数

这是初始化数组的正确方法吗?

这是初始化数组的一种不常见的方法:

 int a[3] = {[2] 5, [0] 10, [1] 15};
Run Code Online (Sandbox Code Playgroud)

在程序中使用此数组,

#include <stdio.h>

int main() {
    //code
    int a[3] = {[2] 5, [0] 10, [1] 15};
    printf("a[0] = %d  a[1] = %d   a[2] = %d\n", a[0], a[1], a[2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a[0] = 10  a[1] = 15   a[2] = 5
Run Code Online (Sandbox Code Playgroud)

在线编译链接: http ://code.geeksforgeeks.org/4onQAI

所以,我有一个问题:

这是初始化数组的正确方法吗?

c arrays

15
推荐指数
3
解决办法
1120
查看次数

为什么const int和bind绑定到int?

在C++入门中,我发现const int &可以用int对象绑定.我不明白,因为我认为const int &应该绑定一个const int不是一个int对象,int对象可以改变,本书解释了这个问题,当const int &对象绑定时int; 两者之间有一个临时对象,例如:

int a=0;
const int &r=a;
Run Code Online (Sandbox Code Playgroud)

我们可以使用b临时值,所以上面等于:

const int b=a;
const int &r=b;
Run Code Online (Sandbox Code Playgroud)

但是我认为这本书不对,因为如果有一个临时的b存在之间,a并且r,价值r无法改变,但是当我在visual studio中调试以下编码时,我发现它不对:

int a=0;
const int &r=a;
a=3;
cout<<r<<endl;
Run Code Online (Sandbox Code Playgroud)

输出是可以改变r=3;的值r,为什么?我不明白.

c++ reference c++11

15
推荐指数
2
解决办法
2272
查看次数

在C++ 17中弃用`std :: result_of`的原因是什么?

我看到std::result_of在C++中被弃用了17.

  • std::result_of在C++ 17中弃用的原因是什么?
  • 此外,我想知道的区别std::result_ofstd::invoke_result.

c++ templates deprecated result-of c++17

15
推荐指数
3
解决办法
1473
查看次数