相关疑难解决方法(0)

我在哪里可以找到当前的C或C++标准文档?

对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.

谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.

要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:

  • C89
  • C99
  • C11
  • C++ 98
  • C++ 03
  • C++ 11
  • C++ 14

c c++ standards c++-faq

394
推荐指数
8
解决办法
12万
查看次数

如何将指针强制转换为int

我试图将地址的值存储在非指针int变量中,当我尝试转换它时,我得到编译错误"无效转换从'int*'到'int'"这是我正在使用的代码:

#include <cstdlib>
#include <iostream>
#include <vector>

using namespace std;

vector<int> test;

int main() {
    int *ip;
    int pointervalue = 50;
    int thatvalue = 1;

    ip = &pointervalue;
    thatvalue = ip;

    cout << ip << endl;

    test.push_back(thatvalue);

    cout << test[0] << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers casting

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

将double转换为int64_t并返回而不丢失信息

这个问题可能会被问到,但我搜索到了,找不到答案.

我正在实现一个玩具虚拟机,其中OpCodes采用以下形式:

std::tuple<int8_t, int64_t, int64_t> // instruction op1, op2
Run Code Online (Sandbox Code Playgroud)

我正在尝试将一个double打包到其中一个操作数中,并在处理它时再次读回它.这不能可靠地工作.

double d = ...
auto a = static_cast<int64_t>(d);
auto b = static_cast<double>(a)
// sometimes, b != d
Run Code Online (Sandbox Code Playgroud)

有没有办法将double的位表示打包成int64_t,然后读取该位模式返回得到与之前完全相同的双精度数?

c++ c++17

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

指向相同地址的指针互不相同

最近,我对指针感到好奇,而且我不明白为什么以下命令不起作用。

我的想法是创建一个变量,说出它的地址(十进制),要求用户将其输入回来,并将其作为指向前一个变量的指针的地址。最后,两个变量应具有相同的值。

最后一个指针应该指向一个错误的内存地址,因为它存在段错误,但是当我打印指针的地址时,它们是相同的!

#include <iostream>

int main() {
    int temp = 0;
    printf("Temporary integer addr 0x%x (dec %d)\n", &temp, &temp);

    int input = -1;
    printf("Give me an address to read (in dec)\n");
    std::cin >> input;
    printf("You chose the number %d (hex 0x%x)\n", input, input);

    int* intPtr = (int*)input;
    int* tempPtr = &temp;

    if (intPtr == tempPtr) {
        printf("It works, they are equal!\n");
    } else {
        printf("Expected: 0x%x got 0x%x\n", tempPtr, intPtr);
        printf("Expected value: 0x%d got 0x%d", temp, *intPtr); // segfaults …
Run Code Online (Sandbox Code Playgroud)

c++

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

将指针地址转换为int

初学者问题:如何获取指针的地址并将其保存为int?例:

int *ptr = xyz;
int i = static_cast<int>(ptr);
Run Code Online (Sandbox Code Playgroud)

因此,如果ptr指向内存地址123,我应该是123.我的编译器说它是一个error: invalid static_cast from type 'int*' to type 'int'.

猜猜我错过了什么,但我不知道是什么.

c++

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

标签 统计

c++ ×5

c ×1

c++-faq ×1

c++17 ×1

casting ×1

pointers ×1

standards ×1