小编Imm*_*uel的帖子

理解c中的语法谜题

在即将到来的c考试中,我们有一个问题可以为您提供额外的学分.

问题始终与各种打印类型的棘手语法有关.

总的来说,我理解了我所经历的所有问题,但有两个问题让我感到困惑:

以下程序的输出是什么?

#include <stdio.h>
void main(){
    printf ("%c", '&'&'&');
}
Run Code Online (Sandbox Code Playgroud)

回答:&

以下程序的输出是什么?

#include <stdio.h>
#include <string.h>
void main(){
    printf("%c",strcmp("***","**")*'*');
}
Run Code Online (Sandbox Code Playgroud)

回答:*

正如您所看到的,问题非常相似.我的问题是,为什么这是输出?

关于第一个问题:我理解一个字符,逻辑方面,总是为TRUE,并且使用TRUE AND-TRUE给你TRUE(或1),但为什么它会将1转换为'&',为什么不呢? ASCII表中的char等价于1?(注意%c的必要打印而不是%d)

关于第二个问题:我理解strcmp根据'首先出现在字典中'的值返回一个int,在这个例子中将导致1但是为什么将它与char'*'相乘(再次,逻辑方面等于1)会导致转换(1*1 = 1)为char'*'?

c syntax printf

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

标签 统计

c ×1

printf ×1

syntax ×1