相关疑难解决方法(0)

C++ POD类型不能有任何构造函数吗?

我有一个类和一个const变量.

struct A 
{
    int b;
};

A const a;
Run Code Online (Sandbox Code Playgroud)

该类A是POD,可以像这样初始化.

A const a = { 3 };
Run Code Online (Sandbox Code Playgroud)

恕我直言,有这样的构造函数看起来很好.

struct A 
{
    int b;

    A(int newB) : b(newB)
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

但Clang假定A为非聚合类型.为什么我不能有这样的构造函数?或者我应该做些什么?


我修改了问题来表达我原来的意思.我已经写了structclass错误,并抱歉@Johannes约困惑:)

c++ constructor pod

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

任何人都可以解释这个C程序的输出吗?

可能重复:
为什么不能在switch语句中声明变量?
绕过定义时如何使用变量?

#include<stdio.h>
  int main()
  {
      int a=1;
      switch(a)
      {   int b=20;
          case 1: printf("b is %d\n",b);
                  break;
          default:printf("%d\n",b);
                  break;
      }
      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

在gcc 4.6.3上运行,输出不是20.这里发生了什么?

c switch-statement

7
推荐指数
3
解决办法
603
查看次数

switch语句问题

让我们通过代码看问题:

代码-1

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a =1;
    switch (a)
    {
        printf("This will never print\n");
    case 1: 
        printf(" 1");
        break;
    default:
        break;
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里的printf()语句永远不会执行 - 请参阅http://codepad.org/PA1quYX3.但

代码-2-

#include <stdio.h>
int main(int argc, char *argv[])
{
    int a = 1;
    switch (a)
    {
        int b;
    case 1:
        b = 34; 
        printf("%d", b);
        break;
    default:
        break;
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

int b将被宣布 - 请参阅http://codepad.org/4E9Zuz1e.

我没有得到为什么在code1 printf() …

c switch-statement

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

C中的变量定义忽略

码:

int main()  
{
  int a=1;
  switch(a)
  {
    int b=20;

    case 1:
    printf("b is %d\n",b);
    break;

    default:
    printf("b is %d\n",b);
    break;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:当b的声明发生在这里时,它为b打印一些垃圾值为什么b在这里没有用20初始化?

c variables

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

标签 统计

c ×3

switch-statement ×2

c++ ×1

constructor ×1

pod ×1

variables ×1