小编use*_*214的帖子

浮点范围内还是范围外?

下面这两个例子都有8个有效数字,但第一个案例没有给出任何警告,而第二个案例确实如此,为什么?

float f1 = 11111111;
float f2 = 99999999;
Run Code Online (Sandbox Code Playgroud)

浮点数据类型是否有7或8个有效数字?

c++

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

左移int的行为

以下是未定义的,为什么?

int i = 0xFF;
unsigned int r = i << 24;
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

使用printf函数

当我开始学习没有C的C++时,我从不打扰寻找printf.现在我想在某些项目中使用格式化输出.所以我正在寻找一些可以解释使用printf和IO流之间差异的参考资料.

我怀疑的是:

float f = 1.5;
printf("%d", f);
Run Code Online (Sandbox Code Playgroud)

为什么打印为零?FWIK它应该重新解释float为int是真的吗?

c++ io

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

指向班级成员的指针

在我的班上,如果我想指向一个班级成员,

struct S
{
     static int get();
     int do_something();
     int x;
};
Run Code Online (Sandbox Code Playgroud)

我做,

int (*p)() = S::get;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于非静态成员

int (*p)() = S::do_something; // error
Run Code Online (Sandbox Code Playgroud)

因为,静态成员函数是一个普通的函数,从下面我引用的引用中可以看出非静态成员函数也是一个普通函数,为什么它不起作用呢?这是什么意思?

(9.2/10)[注意:非静态成员函数的类型是普通函数类型,非静态数据成员的类型是普通对象类型.没有特殊的成员函数类型或数据成员类型.]

c++ function-pointers

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

包含头文件的困惑

当我包含头文件时,让我们说,

//myheader.h
#ifndef MY_HEADER_H
#define MY_HEADER_H

//....

#endif
Run Code Online (Sandbox Code Playgroud)

成,

//mycpp1.cpp
#include "myheader.h"
Run Code Online (Sandbox Code Playgroud)

我被告知的是,当mycpp1.cpp包含myheader.h时,MY_HEADER_H会被定义,因此任何再次包含它的尝试都将导致错误.

现在,如果我想将它包含在mycpp2.cpp中.

//mpcpp2.cpp
#include "myheader.h"
Run Code Online (Sandbox Code Playgroud)

是否会被包含在内,或者它是否在第一次包含时使用相同的声明?

c++ include-guards

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

在Java中初始化和使用接口?

首先,我了解到:

  • 您无法实例化接口
  • 接口不实现其功能

看到以下Java代码后:

public class MyClassTest {

    public static void main(String[] args) {

        // String to CharSequence?

        CharSequence c = "Java";

        System.out.println(c);
        System.out.println(c.length());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我得知这CharSequence是一个接口时,我很困惑

  • 如何使用像对象这样的接口并初始化它?

  • 为什么CharSequence实现一个length函数,如果它的接口?

java interface

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

C++中的声明符

什么是C++中的init-declarator和声明符之间的区别?init-declarator可能出现在init-declarator-list中.例:

int x, y, z;
Run Code Online (Sandbox Code Playgroud)

要么

  int x;
  int y;
  int z;
Run Code Online (Sandbox Code Playgroud)

其中x,y,z可能是init-declarators或我应该说声明者?

c++ declaration language-lawyer

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

什么是会员模板?

我可以调用成员模板,模板模板成员函数吗?或者我怎么知道将其称为成员模板以及它是如何理解的?

例如:

对于案例A:我有一个类,如果我使其成员函数成为模板成员函数,我会称之为成员模板吗?

对于案例B:我有一个模板类,如果我将其模板成员函数作为模板,我会将其称为成员模板,还是可以将其称为模板模板成员函数?

c++ templates

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

与解引用运算符混淆

为了清楚事实,我想问一下

int i = 1;
int *p = &i;
i = *p;
Run Code Online (Sandbox Code Playgroud)

你怎么称呼p上的运营商*?被称为解除引用运算符与第3行相同?

c++

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

标量类型是否包括类类型的指针?

我们知道的标量类型有:int, char, float,等等。但是指针也是标量类型。它包含指向类类型的指针还是仅包含标量类型?

c++ types

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

在全局命名空间中使用变量

为什么这是一个错误?

int a = 0;
a = 42;

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

我可以找到这种行为的可能匹配:

(3.4.1/4)在全局范围内使用的名称,在任何函数,类或用户声明的命名空间之外,应在全局范围内使用之前声明.

这可能是标准的缺陷吗?

c++

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

与后缀表达式和运算符的语法混淆

在以下情况中,

int i = 0;
int j = 42;
i = j++;
Run Code Online (Sandbox Code Playgroud)

我知道++是posfix运算符,所以,是j一个posfix表达式还是应该说j++是posfix表达式?

c++ syntax

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