标签: ansi-c

澄清了c stdlib.h中的RAND_MAX和rand()

为什么以下c代码产生的实数仅在0到1之间(例如:0.840188,0.394383 ...等),double a,b当RAND_MAX的值出现时0.000000.不应该RAND_MAX设置rand()函数生成的数字的最大值?

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {

    double a,b,c;
    for (int i=0;i<100;i++){
    a=(double)rand()/(double)RAND_MAX;
    b=(double)rand()/(double)RAND_MAX;
    c=a-b;
    printf("itteration : %d values a=%f,b=%f,c=%f, RAND_MAX=%f \n",i,a,b,c,RAND_MAX);
    }  
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c gnu ansi ansi-c

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

缺少头文件,ANSI C的<tools/debug.h>?

我希望你做得好.当我遇到示例程序中实现的这些头文件时,我正在浏览Allen I. Holub的书"Compiler Design In C":

#include <tools/debug.h>
#include <tools.h> /* Needed only for prototype
Run Code Online (Sandbox Code Playgroud)

我的编译器说没有这样的文件或目录(Dev-C++).我已将编译器设置设置为ANSI-C,了解作者如何使用ANSI-C编写代码,但无济于事.

该程序还包括一个PRIVATE关键字,在从C99更改为ANSI-C之后,编译器仍然将其报告为未知关键字.

任何人都可以帮我解决这个问题吗?如果之前有人问过这个问题,我会道歉,但我无法在任何地方找到这方面的参考.我还在这里列出了代码的图片.

第一页

第二页,剩下的部分

如果我应该弃权,或者我无法访问这些文件,我还有其他选择吗?我真的想完成这个项目.

提前感谢您花时间和耐心阅读所有这些内容.

c compiler-construction private ansi-c

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

为什么在c99或c90模式下支持_Generic关键字?

我写了一个简单的C程序来测试_Generic关键字的可用性.

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

我在Ubuntu上用gcc-5.3.1clang-3.8.0编译器运行程序.

显然,当使用最新的c11标准编译时,该程序会产生错误.

但是,当使用-std = c90-std = c99标志进行编译时,它也会生成错误.然而,_Generic关键字仅在c11标准中引入.

这是-std = flags的行为不同吗?有没有办法测试纯c90和c99标准?

编辑:

我确实使用其他标识符运行相同的程序,这些标识符不是c11标准的关键字.喜欢:

int _Hello;
int _Gener;
Run Code Online (Sandbox Code Playgroud)

他们成功编译没有任何错误或警告.这可能是因为7.1.3,它说

如果程序在保留它的上下文中声明或定义标识符(除了7.1.4允许的标识符),或者将保留标识符定义为宏名称,则行为未定义

正如@Art和@Lundin所说.

c c99 c89 c11 ansi-c

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

后增量运算符是否可以保证立即运行?

假设我有以下代码:

int i = 0;
func(i++, i++);
Run Code Online (Sandbox Code Playgroud)

在返回值后立即发生增量?是否保证第一个参数为0,第二个参数为1?

c c89 post-increment ansi-c

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

代码之前(1)不运行

我的代码如下:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("hello");

    while(1){
        // whatever here
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:为什么跳过第一条指令?它只运行循环,你永远不会打印.我使用gcc和g ++编译它,结果相同.

c ansi-c

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

数字为String的字符串,Unix C问题

我想使用abc1,abc2,abc3,abc4,.. abc100作为结构变量名.但我不知道如何设置这个?不知道.

有人可以帮帮我吗?非常感谢.

c string gcc ansi-c

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

将自己的函数包含到 ANSI C 标准库的过程

如何将自己的编程函数包含到标准 C (ANSI C) 库中?任何正在学习或从事 C 语言工作的人都可以随时随地使用这些功能,一般不需要开发。

示例:有人开发了名为“FunFun()”的函数,并假设它对大多数程序员来说都非常有用。那么,如何在不开发且仅包含标准库的情况下访问这个“FunFun”功能呢?

c function standard-library ansi-c

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