小编Jab*_*cky的帖子

如何在C中引用main函数之后的静态全局变量

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    // write code here
    printf("%d\n", a);
    
    return EXIT_SUCCESS;
}

static int a = 10;
Run Code Online (Sandbox Code Playgroud)

如何a在注释位置引用静态全局变量?

我知道amain 之前的那个地方不会导致这个问题。我只想知道是否有任何相关的语法可以做到这一点?

c

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

重载 std::array &lt;&lt; 运算符

我在尝试为 std::array 重载运算符 << 时遇到问题。对于所有其他集合,我尝试以随意的方式进行:

std::ostream& operator<<(std::ostream& os, std::array<int> const& v1)
{
    for_each(begin(v1), end(v1), [&os](int val) {os << val << " "; });
    return os;
}
Run Code Online (Sandbox Code Playgroud)

但是编译器希望我添加有关数组大小的信息,这不会使它成为任何整数数组的通用解决方案。我知道如果我想为一般类型制作它,我将不得不使用模板,但现在我只想为整数数组制作它。

c++ c++11 c++14

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

收到警告“[-Wimplicit-int]”

收到错误消息

Calculator.c:11:9: 警告:“num1”的类型默认为“int”[-Wimplicit-int] 11 | int 加法(num1, num2)"

代码仍然会运行,但想知道为什么会出现这种情况?

#include <stdio.h>

int main()
{
    int num1;
    int num2;

    int addition(num1, num2)
    {
        return num1+num2;
    }

    int subtraction(num1, num2)
    {
        return num1-num2;
    }

    int multiply(num1, num2)
    {
        return num1*num2;   
    }

    float devide(num1, num2)
    {
        return num1/num2;
    }

    printf("Still works");

}
Run Code Online (Sandbox Code Playgroud)

c

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

C 中的类近似 - 这种巫术或技术上可以接受吗?

我只需要用 C 和 C 语言做一个大型项目,不需要外部库(SDL 除外)。我开始寻找用 C 语言进行某种课程的方法,是什么导致我这样做的:

typedef void (*voidFunction)(void);

typedef struct{
    int id;                             
    voidFunction printId;
} Object;

Object *new_Object(int id){
    Object *newObject = malloc(sizeof(Object));
    newObject->id = id;
    void printId(){
        static Object *this = NULL;
        if(!this) this = newObject;
        printf("%d\n", this->id);
    };
    newObject->printId = printId;
    return newObject;
}

int main(){
    Object *object = new_Object(5);
    object->printId();
    object->id++;
    object->printId();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

主要输出:

5
6
Run Code Online (Sandbox Code Playgroud)

所以这可行,但是看起来合理吗?如果我在大型项目中使用这种架构,我是否应该预料到会遭到强烈反对?也许我在没有意识到的情况下输入了分配的内存?

c class

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

如果我们在主函数中返回非零值,为什么它不显示任何类型的错误

#include <stdio.h>

int main()
{
  printf("hello world");
  return 55;
}
Run Code Online (Sandbox Code Playgroud)

我正在读一篇文章。main()函数的返回值显示了程序如何退出。程序的正常退出以返回值为零来表示。如果代码有错误、错误等,它将以非零值终止。

因为我向主函数返回一个非零值。我认为它一定会显示错误(因为我没有向主函数返回 0),但是当我编译并执行它时。它没有显示任何错误并且执行正常。你能解释一下为什么吗?提前谢谢

c

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

fscanf 中的值丢失

我使用的IDE是Clion。我想读取 .txt 文件中存储的行分隔数据。每行包含名字、姓氏、性别、ID 和年龄,分别为 str、str、str、int 和 int。

学生名单.txt

Olivia SWANSON F 29001 20
Emma ONEILL F 7900 19
Run Code Online (Sandbox Code Playgroud)

我尝试用它fscanf来读取数据。

FILE *fp;
char fname[20];
char sname[20];
char gender[1];
int ID;
int age;
fp = fopen("C:\\Users\\Catlover\\Desktop\\DSA\\Program2\\StudentList.txt", "r");
while(fscanf(fp, "%s %s %s %d %d", fname, sname, gender, &ID, &age)!= EOF)
{
    printf("%s,%s,%s,%d,%d\n", fname, sname, gender, ID, age);
}
fclose(fp);
return 0;
Run Code Online (Sandbox Code Playgroud)

但它返回的结果看起来有点奇怪,因为它不输出第二个值。

结果是

FILE *fp;
char fname[20];
char sname[20];
char gender[1];
int ID;
int age;
fp = fopen("C:\\Users\\Catlover\\Desktop\\DSA\\Program2\\StudentList.txt", "r");
while(fscanf(fp, "%s …
Run Code Online (Sandbox Code Playgroud)

c string scanf char

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

C++ 中的平等

我仍在学习 C++ 编程的基础知识,并尝试了 C++ 运算符的一些应用程序,但似乎有些事情我仍然不明白。

我尝试编写以下行来测试使用等于(==)作为三元运算符的可能性:

cout << "(2+2 == 2*2 == pow(2, 2)) == " << (2+2 == 2*2 == pow(2, 2)) << endl;

输出为0

所以,我怀疑这可能是因为 pow(2,2) 的返回值是双精度型,而前两个操作数的返回值是整数,因此我尝试了以下操作:

cout << "(2+2 == 2*2 == int(pow(2, 2))) == " << (2+2 == 2*2 == int(pow(2, 2))) << endl;
cout << "(double(2+2) == double(2*2) == pow(2, 2)) == " << (double(2+2) == double(2*2) == pow(2,2)) << "\n\n";
Run Code Online (Sandbox Code Playgroud)

两行代码的输出也是 0。

我还尝试使用括号来减少操作数的数量,但最终得到相同的输出。

c++ types equality operators

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

查找sizeof字符串的指针数组

假设我们有这个场景..

char *a[] = {"abcd","cdef"};
Run Code Online (Sandbox Code Playgroud)

我想知道字符串"abcd"的sizeof,我不想使用strlen.

请回答我如何获得字符串"abcd"的sizeof?

c

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

为什么scanf对大浮点数输错了?

#include <stdio.h>

int main() { 
float k;
    scanf("%f", &k);
    printf("%f", k);
} 
Run Code Online (Sandbox Code Playgroud)

在这个简单的程序中,当我输入一个包含最多8位数的数字时,它会正确显示.

但如果我超过8位,即输入123456789输出123456792.

为什么会这样?那么有趣的事实是,如果我输入的任何数字,123456789并且123456796然后它总是显示123456792.

它是否与浮点数的8位小数精度有关?

c floating-point gcc scanf

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

WIN32_FIND_DATA FileNAme不会输出文件名,而是放出HEx-Codes

我试图得到一个文件夹中所有文件的完整列表,如下所示:

#include<Windows.h>
#include<iostream>
#include<stdio.h>

using namespace std;

void main()
{
HANDLE dateiHandle;
WIN32_FIND_DATA wfindD;

dateiHandle = FindFirstFile(L"E:\\Roman\\PIC\\funpics\\*", &wfindD);
do
{
    cout << wfindD.cFileName << endl;
} while (FindNextFile(dateiHandle, &wfindD));

FindClose(dateiHandle);
while (1)
{

}
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么结果是这样的:

00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
00AFFCCC
Run Code Online (Sandbox Code Playgroud)

c++ directory winapi

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

标签 统计

c ×7

c++ ×3

scanf ×2

c++11 ×1

c++14 ×1

char ×1

class ×1

directory ×1

equality ×1

floating-point ×1

gcc ×1

operators ×1

string ×1

types ×1

winapi ×1