几个基本的C问题

时间:2009-04-24 09:18:30

标签: c

我是一个正在尝试学习C的人,但是在做项目时我遇到了几个问题:

1)我究竟如何实现随机整数生成?我用Googled找到了0到x代的代码,下面是代码,但是我决定的2个整数之间怎么样(比如X和Y之间)?

int random;
random = random(100);

2)如何在开始时将变量设置为NULL(如在Java中)并在它为NULL时对其进行操作?例如,我想实现以下目标:

int a = null;
if (a == null){
    a = 3;
}

4 个答案:

答案 0 :(得分:9)

1)     int r = random(Y - X)+ X;

2) C或Java中的整数不能为空。在C中,只有指针可以为null,通过将它们指向零来表示。但是,我建议你在掌握基础知识之前不要陷入整个指针混乱。

答案 1 :(得分:1)

  

1-我究竟如何实现随机整数生成[...]

请参阅FAQ 13.15FAQ 13.16 - 后者明确回答了这个问题。

  

2-如何在开头

中设置变量null

对于浮点数和整数类型,您可以将它们分配给魔术值0.对于指针,您可以将它们分配给0(再次)或宏NULL

答案 2 :(得分:0)

获得所需的范围(y-x)乘以每个随机数乘以(y-x)。要使它们从x开始并在y处结束,将x添加到每个数字(已经乘以(y-z))。假设y> X

int i;

for (i = 0; i < NrOfNumers; i++)
{
   randomNumberSequence[i] = randomNumberSequence[i]*(y-x) + x;
}

答案 3 :(得分:0)

在C中,您经常会看到以下内容:

int x = -1;
if (x == -1) { x = 3; } else { /* do nothing */ }

这假设值类型实际上是无符号的,或者至少-1不是有效值。你也可以这样做:

#define UNINITIALIZED    ((int8_t) -128) /* -128 has no inverse with 8-bit */
...
int8_t x = UNINITIALIZED;
if (x == UNINITIALIZED) { x = 3; } else { /* do nothing */ }