小编Pan*_*apa的帖子

C/C +程序的最大堆栈大小?

我试过以下程序.创建此程序的目的是发现有关堆栈大小的更多信息.

int main()
{
    int nStack[100000000];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

执行上述代码后,程序因堆栈大小分配而崩溃.堆栈的最大可能大小是多少?它是否适用于每个程序/计算机?可以增加吗?

我想知道为了知识.如果任何人都可以在C/C++中提供示例,那将非常有用.

c c++ stack data-structures

21
推荐指数
3
解决办法
3991
查看次数

为什么下面的代码中没有编译或运行时错误?

我偶然发现了以下.编译器编译以下代码时没有任何错误或警告.请帮我理解为什么编译器没有抛出任何错误?该程序只包含双引号中的字符串.

我没有声明任何char数组也没有将以下字符串分配给任何变量.

void main()
{
    "Why there is no error in compilation?";
}
Run Code Online (Sandbox Code Playgroud)

c c++ compilation

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

Compare two float variables in C++

I have read multiple articles regarding floating point variables comparison, but failed to understand and get the required knowledge from those articles. So, here I am posting this question.

What is the good way to compare two float variables? Below is the code snippet:

#define EPSILON_VALUE 0.0000000000000001

bool cmpf(float A, float B)
{
  return (fabs(A - B) < EPSILON_VALUE);
}

int main()
{
  float a = 1.012345679, b = 1.012345678;

  if(cmpf(a, b))cout<<"same"<<endl;
  else cout<<"different"<<endl;

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

The output: same …

c++ floating-point

1
推荐指数
1
解决办法
172
查看次数

编译错误:“声明的嵌套名称说明符未引用类、类模板或类模板部分特化”

我有2个文件:

摘要.hpp

template <typename T, typename = std::enable_if_t<std::is_base_of_v<DigestCreator, T>>>
class DigestHolder {
public:
    DigestHolder();
};
#include "digest.ipp" // Included here.
Run Code Online (Sandbox Code Playgroud)

摘要.ipp

template <typename T, std::enable_if_t<std::is_base_of_v<DigestCreator, T>>>
DigestHolder<T>::DigestHolder()
{};
Run Code Online (Sandbox Code Playgroud)

该类在hpp文件中声明并在ipp文件中定义。该ipp文件包含在文件末尾hpp。

但是,我收到编译错误:

error: nested name specifier 'DigestHolder<T>::' for declaration does not refer into a class, class template or class template partial specialization
DigestHolder<T>::DigestHolder()
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题吗?

我尝试修改hpp模板声明如下,但没有好的结果:

尝试1:

template<typename T, std::enable_if_t<std::is_base_of_v<DigestCreator, T>, std::nullptr_t> = nullptr> 
class DigestHolder {};
Run Code Online (Sandbox Code Playgroud)

尝试2:

template<typename T, std::enable_if_t<std::is_base_of_v<DigestCreator, T>, bool> …
Run Code Online (Sandbox Code Playgroud)

c++ type-traits enable-if c++17

1
推荐指数
1
解决办法
1692
查看次数

案例的数字前缀为0时,案例如何工作?

我正在研究Ingenico的EDC终端.以下代码存在于先前的实现中.在调试时,我遇到了这块代码,我面临着难以理解的问题.

short bankPEM = 0;
//bankPEM = 41; //Chip
bankPEM = 17; //Swipe
//bankPEM = 801; //Fallback

switch(bankPEM)
{
    case 021: cout<<"021"; break; //Swipe
    case 051: cout<<"051"; break; //Chip
    case 801: cout<<"801"; break; //Fallback
    default: cout<<"Default"; break;
}
Run Code Online (Sandbox Code Playgroud)

bankPEM是一个短变量.我发现下面的执行观察:

  1. 当它包含时41,case 051执行.
  2. 当它包含时17,case 021执行.
  3. 当它包含时801,case 801执行.

我期望代码执行default数字1和2的情况.在这种情况下,任何人都可以显示一些亮点.

我也将代码转换为汇编语言.调试汇编代码后,我将分享我的理解.

提前致谢.

c switch-statement

0
推荐指数
1
解决办法
131
查看次数

使用std :: map const_iterator更改/更新值

我只是想知道我是否可以使用const_iterator更改/更新地图的值。

下面是代码片段:

int main()
{
    map <int, int> m;
    m.insert(make_pair(1, 10));

    map <int, int>::const_iterator itr = m.begin(); //The iterator is const_iterator
    itr->second = 30;

    cout << itr->second; //The value to be printed is 30, and not 10.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预先感谢您分享您的想法。

c++ stl stdmap const-iterator

0
推荐指数
1
解决办法
111
查看次数