相关疑难解决方法(0)

浮点比较中的问题

void main()
{
    float f = 0.98;
    if(f <= 0.98)
        printf("hi");
    else
        printf("hello");
    getch();
}
Run Code Online (Sandbox Code Playgroud)

我在这里遇到这个问题.使用不同的浮点值得到不同的结果.为什么会这样?

c floating-point floating-point-conversion

6
推荐指数
2
解决办法
2875
查看次数

是否有必要在Main()中返回一个值?

当我遇到C程序的return语句/退出语句时,我只是编写了一个快速程序来计算一些东西.

我声明main()是类型的int,所以我必须输入一个整数,否则我的程序将无法正确编译.但是,制作main一个Boolean甚至是否可以接受void

我知道创建一个C程序的标准方法是返回一个值,这样可以解决任何问题,但不会以Boolean同样的方式工作吗?另外,我是否能够宣布它void并且在终止后仍然运行我的程序时操作系统没有问题?

感谢您的帮助.

c return-type

6
推荐指数
2
解决办法
2515
查看次数

Unix中最大子进程数

我心里有一个疑问。我只想知道子进程通过使用fork()系统调用创建的子进程的最大限制是多少?我正在将UBUNTU OS(12.04)与3.2.0-45通用内核一起使用。

c unix operating-system

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

C代码中的QA C警告消息

我编写了一段代码并通过QA C进行了分析,但它显示了一个警告"x"具有外部链接,并且在没有任何先前声明的情况下进行定义.请帮助我理解这一点.

码:

#include <stdio.h>
int x;
void main()
{
}
Run Code Online (Sandbox Code Playgroud)

c

6
推荐指数
2
解决办法
5513
查看次数

为什么在printf格式字符串中使用%8.8而不是%08?

刚刚遇到一些(非常)遗留代码(最初编写为C但现在编译为C++)并使用宽度说明符将零填充字符串

void main()
{
    unsigned long val = 2413;
    printf("V1: %08lu \n", val);
    printf("V2: %8.8lu \n", val);
}
Run Code Online (Sandbox Code Playgroud)

结果是一样的

V1: 00002413
V2: 00002413
Run Code Online (Sandbox Code Playgroud)

那么为什么要使用V2呢?从昔日开始,它是std lib的遗留方面吗?

编译器详细信息:用于x86的Microsoft(R)C/C++优化编译器版本19.10.25019

c c++ printf format-specifiers visual-c++

6
推荐指数
4
解决办法
1866
查看次数

失败时返回代码。正面还是负面?

C程序在特殊情况下在Linux中可能无法执行。示例:您分配了一些空间,但操作系统拒绝了它。

char *buffer = (char *) malloc(1024);
if (buffer == NULL)
    return ENOMEM;
Run Code Online (Sandbox Code Playgroud)

此故障由交付给OS的返回码标记。

  • 返回代码0(EXIT_SUCCESS)被标记为成功执行。
  • 不为0的返回码被标记为失败。

所以我的问题是,当程序检测到错误时,约定什么?它应该返回正数还是负数返回码?

我的教授告诉我在UNIX / Linux中始终返回负错误代码。但是errno码都是正整数。同样,EXIT_FAILURE中的define-Statement为1,为正整数。所以我的代码应该像这样:

char *buffer = (char *) malloc(1024);
if (buffer == NULL)
    return -ENOMEM;
Run Code Online (Sandbox Code Playgroud)

还是喜欢上面的代码?我从Linux内核模块知道,在大多数情况下,它们在失败时会返回负错误代码。

感谢您的帮助。

c linux return errno

6
推荐指数
2
解决办法
4487
查看次数

C 是否有相当于 Python 的: if __name__ == '__main__': 在文件顶部写入 main() ?

在 C 语言中,之前编写函数声明main似乎是多余的。

我不想使用这些方法:

  1. 将函数写入不同的文件中,然后在顶部导入。
  2. 将整个函数写在main之前。
if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

C 的方式是什么?

#include <stdio.h>

void printHello(void);

int main(void)
{
    printHello();
}

void printHello(void)
{
    printf("Hello World\n");
}
Run Code Online (Sandbox Code Playgroud)

环境:我正在使用一个 make 脚本,该脚本使用 clang 并在哈佛的 cs50 云 IDE 中进行附加检查。IDE 使用 c99 版本的语言设置,如果没有函数声明则无法编译。

我的测试:仅使用 clang 仍然错误相同;使用GCC实际上编译时只带有警告。

为什么海湾合作委员会有效? GCC 看到一个没有前面声明的函数调用,它假设该函数返回 int 并编译。(c99 之前的行为)

已解决:c99 定义消除了隐式类型,因此所有函数都必须在使用前声明。在 C 语言中,没有等效的 for:if __name__ == '__main__':在文件顶部写入 main() 的用途。

感谢约翰·博德的帮助;现在有意义了。

c python function cs50

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

如何检查字符串是否包含某个字符?

我对 C 编程还很陌生,例如,如果我们有:

void main(int argc, char* argv[]){

  char checkThisLineForExclamation[20] = "Hi, I'm odd!"
  int exclamationCheck;
}
Run Code Online (Sandbox Code Playgroud)

所以有了这个,exclamationCheck如果“!”我将如何设置为 1 存在,如果不存在则为 0?非常感谢您提供的任何帮助。

c arrays string char string-comparison

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

内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

例如:

#include <stdio.h> 
int main (void)                         /* Why int and not short int? - Waste of Memory */ 
{
     printf("Hello World!");
     return 0; 
}
Run Code Online (Sandbox Code Playgroud)

为什么main()通常用inttype 定义类型,如果通常只返回0或1,则在32位内存上分配4个字节,而其他类型(例如short int(2个字节,32位)甚至char(1个字节,32位)会节省更多的内存吗?

它浪费了内存空间。

注意:问题不是给定线程的重复;它的答案仅对应于返回值本身,而与明确关注的数据类型不对应。

问题是针对C和C ++的。如果这些答案之间的答案有所变化,请在提到特定语言的上下文时分享您的智慧。

c c++ memory types allocation

6
推荐指数
4
解决办法
307
查看次数

为什么main()必须返回一个int?

在大多数情况下int main()不返回任何东西,它甚至不必,因为没有return不会给出错误.那么为什么main必须返回一个int?为什么无效主要不可能?

编辑:我的意思是,如果通常没有,为什么int main()是标准return

c++

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