我有一个简单的 C 程序“prog.c”:
#include<stdio.h>
int main(int argc, char *argv[]) {
printf("Count: %d\n", argc);
printf("Text: %s\n", argv[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我编译程序并使用 .txt 文件作为参数运行时,程序根本无法识别该参数。
我使用 gcc prog.c 进行编译,它创建了一个“a.exe”文件。
然后我使用 .txt 文件作为参数运行 .exe 程序(尝试了下面的所有选项):
a < text.txt
a.exe < text.txt
输出总是
Count: 1
Text: (null)
Run Code Online (Sandbox Code Playgroud)
我在Win10上运行一切并使用MinGW进行编译。
我是 C++ 新手,想测试我在 while 循环中的知识,我使用 MS Visual Studios 2019,并创建了此代码
int main() {
int i = 12;
while (i > 10) {
cout << i;
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我遇到了看似无限的数字线,它们仍在继续运行。我尝试在 w3schools IDE 上使用它,它打印出一个长字符串。我知道整数最大可达 2,147,483,647,但它并没有结束,甚至还没有在那里。有人可以向我解释发生了什么事吗?
vector<bool>我正在尝试在 C++ 中为 50,000,000,000 个条目分配 a ;但是,程序出错了。在抛出 'std::bad_alloc' What(): std::bad_alloc 实例后调用终止(或者在在线编译器中它刚刚结束)。
我最初以为这是由于尺寸太大造成的;然而,v1.maxsize()对我来说已经超过50GB了。但令人困惑的是,当我减少条目数量时,它工作得很好。
问题:考虑到条目数小于向量的最大大小,根本原因可能是什么?
其他问题/答案表明类似的问题是由于在 32 位 cpu 上造成的;不过我有一个64位的。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
long size = 50000000000;
std::vector<bool> v1;
std::cout << "max_size: " << bool(v1.max_size() > 50000000000) <<"vs" << size << "\n";
v1 = std::vector<bool>(size,false);
cout << "vector initialised \n" << endl;
cout << v1.size() << endl;
}
Run Code Online (Sandbox Code Playgroud)
注意:我本质上是试图创建一个内存高效位图来跟踪不同数据结构的某些地址是否已初始化。我无法使用本文中提到的位集,因为其大小在编译时未知。
就像只有 2 个输入,但如果一个整数中有多个输入。我想要它,这样我就可以一次拥有多个。我需要帮助,我刚刚开始编码,但我陷入了这个问题。对于某些人来说这可能看起来很容易,但我向互联网寻求帮助;-;
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
float A, B, a, b, c, d;
cout << "Pick an two integers: \n";
cin >> a, b;
cin >> c, d;
A = a + b;
B = c + d;
cout << "Sum of factors A: " << A << endl;
cout << "Sum of factors B: " << B << endl;
if (A < B){
cout << "Sum of factors for interger A < Integer …Run Code Online (Sandbox Code Playgroud) 我正在制作一个简单的 Windows 程序,但由于某种原因RegisterClass返回FALSE,我不知道为什么。
我设置了结构的lpszClassName、hInstance和成员。lpfnWndProcWNDCLASS
这是我的代码:
#include <windows.h>
#include <tchar.h>
template<typename T>
class BaseWindow {
public:
static LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) {
T* pThis = NULL;
if (umsg == WM_NCCREATE) {
CREATESTRUCT* pCreate = (CREATESTRUCT*)lparam;
pThis = (T*)pCreate->lpCreateParams;
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pThis);
pThis->m_hwnd = hwnd;
} else {
pThis = (T*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
}
return pThis->HandleMessage(umsg, wparam, lparam);
}
HWND m_hwnd;
BOOL cls_state = FALSE;
BOOL Init() …Run Code Online (Sandbox Code Playgroud) 我有一个Largest接受三个参数a、b和 的函数c。该函数旨在返回三个输入的最大值。但是,我在编译代码时遇到错误,指出该函数可能不会返回值。我不确定为什么会发生这个错误,因为我确实在函数中返回了一个值。
下面是我的 C++ 代码:
#include <stdexcept>
int Largest(int a, int b, int c) {
if (a > b && a > c) {
return a;
}
else if (a < b && b > c) {
return b;
}
else if (a < c && c > b) {
return c;
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助理解和解决此错误的帮助将不胜感激。
我有一个数组,它包含 5 个没有值的元素,但我想通过使用 for 循环为每个元素给出一个值。
我想给第一个元素值 1 并在第二个循环中将该值加倍。

int size[5];
for (int i = 0; i < 5; i++){
size[i] = 1;
// how to double this value in second loop
}
Run Code Online (Sandbox Code Playgroud)