小编psr*_*esh的帖子

#define是否在行业标准中被禁止?

我是一年级计算机专业的学生,我的教授说#define的行业标准,以及被禁止#if,#ifdef,#else,和其他一些预处理指令.由于出乎意料的行为,他使用了"禁止"一词.

这准确吗?如果是这样的话?

事实上,是否存在禁止使用这些指令的任何标准?

c c-preprocessor preprocessor-directive

68
推荐指数
10
解决办法
7822
查看次数

应该始终使用std :: endl吗?

我在C++ Primer(第5版)一书的帮助下从C跳到C++,其中作者陈述如下:

程序员经常在调试期间添加print语句.此类语句应始终刷新流.否则,如果程序崩溃,输出可能会留在缓冲区中,从而导致程序崩溃的错误推断.

但网上帖子则另有说法; 有人说持续刷新缓冲区对程序不利并导致性能问题.

我的问题:

  1. 你应该什么时候使用std::endl
  2. 作者是错的还是我误解了他所说的任何部分?
  3. 您能否提供任何需要刷新输出流的真实场景?

PS

  1. 冲洗缓冲区意味着什么?

c++

6
推荐指数
3
解决办法
1579
查看次数

截断从double到float?

#include <iostream>

using namespace std;

int main(void)
{
    float haha[2];
    float (&ptr)[2] = haha;
    ptr[0] = 0.54;
    ptr[1] = 0.65;

    cout << haha[0] << '\n' << haha[1];
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

目前我正在学习复杂的数组声明使用底漆C++和在这里我的代码,我得到警告说,Warning C4305 '=': truncation from 'double' to 'float' Array两个ptr[0]ptr[1]出于某种原因,但我没有看到任何地方双打但是当我修改代码来

ptr[0] = (float)0.54;
ptr[1] = (float)0.65;
Run Code Online (Sandbox Code Playgroud)

我似乎没有任何警告可以解释为什么?先感谢您!

c++ floating-point

6
推荐指数
2
解决办法
8626
查看次数

Scanf 不扫描 %c 字符而是跳过该语句,这是为什么?

我使用 switch case 语句编写了一个程序并要求输入一个字符,但它没有要求在控制台窗口中输入字符而是完全跳过它

int main() 
{
    float a, b, ans;
    char opr;

    printf("\nGIVE THE VALUES OF THE TWO NUMBERS\n");
    scanf(" %f %f",&a,&b);


    printf("\nGIVE THE REQUIRED OPERATOR\n");   

    //no display(echo) on the screen
    //opr = getch();
    //displays on the screen
    //opr = getche();

    scanf("%c",&opr);

    switch(opr)
    {
        case '+' :
            ans = a+b;
            printf("%f", ans);
            break;          
        case '-' :
            ans = a-b;
            printf("%f", ans);
            break;          
        case '*' :
            ans = a*b;
            printf("%f", ans);
            break;          
        case '/' :
            ans = a/b;
            printf("%f", ans); …
Run Code Online (Sandbox Code Playgroud)

c scanf char dev-c++ switch-statement

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