小编Lee*_*Gup的帖子

在Racket中键入检查参数是一种好习惯

我是球拍的新手,我需要作为编写一些程序的作业.检查参数的类型是一种好习惯吗?例如,更好的是:

(define (add x y)
  (+ x y)
)
Run Code Online (Sandbox Code Playgroud)

要么

(define (add x y)
  (unless (number? x)(raise exception))
  (unless (number? y)(raise exception))
  (+ x y)
)
Run Code Online (Sandbox Code Playgroud)

我可以考虑一下:类型检查会使异常更早被抛出,并且更容易找到.但它使代码更复杂,更不易读.

scheme types racket

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

调用printf("%d")两次,const结果

我写了以下程序:

#include<stdio.h>

int main(){
        printf("%x\n");
        printf("%x\n");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道它是未定义的行为,我只是检查发生了什么.编译器是gcc.

样本输出是:

541d3118
7ffffff7
Run Code Online (Sandbox Code Playgroud)

另一个示例输出是:

e0b08078
7ffffff7
Run Code Online (Sandbox Code Playgroud)

当我使用-O3flag 编译它时,结果是:

5ec20f18
9
Run Code Online (Sandbox Code Playgroud)

3bedfa08
9
Run Code Online (Sandbox Code Playgroud)

为什么第一个值会改变,而不是第二个值?为什么高优化级别的第二个值不同?

c printf

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

标签 统计

c ×1

printf ×1

racket ×1

scheme ×1

types ×1