我是Common Lisp的新手.我尝试建立自己的运营商功能.在第一个函数中,我尝试将一个添加到给定的数字.第二个函数应该以m的频率递归使用第一个函数.当我输入totaladd(5 3)时,我期待一个8.我怎么能对未定义的函数k做什么?和
(defun add1(n)
(+ n 1)
)
(write (add1 5))
(defun totaladd (k m)
(if (eq m 0)
0
(totaladd(add1(k) (- m 1)))
)
)
(write (totaladd 5 3))
Run Code Online (Sandbox Code Playgroud) union Data {
int i;
char s[20];
} data;
int main(){
printf( "%lu\n", sizeof( data ) );
for( int i = 0; i < 20; ++i ) {
data.s[i] = 0;
}
data.i = 0;
strcpy( data.s, "Hello World!");
if( data.i ) {
strcpy( data.s, "Farewell!");
}
printf( "%s\n", data.s );
Run Code Online (Sandbox Code Playgroud)
为什么它以"告别"回应?我希望if( data.i )评估为False,但不知何故,它被评估为True.