我真的不明白的一件事是关于clang的功能,如果clang是编译器的前端部分,它应该只为源代码做解析器工作,剩下的工作将由LLVM完成.但是clang也可以生成可执行文件.那么如何理解呢?clang和llvm之间有什么关系?
我想printf()用动态参数控制函数输出格式,如下面的代码所示:
#include<stdio.h>
int main(int argc,char ** argv)
{
printf(argv[1],"hello,world");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我编译并运行它:
$ gcc -o test test.c
$ ./test "\t%s\n"
Run Code Online (Sandbox Code Playgroud)
结果很奇怪:
\thello,world\n$
Run Code Online (Sandbox Code Playgroud)
为什么"\n"而且"\t"没有效果?
当我阅读有关C语言的书籍时,两级指针给我带来了很多困扰.
char s[5][5];
char *s[5];
char (*s)[5];
Run Code Online (Sandbox Code Playgroud)
那么他们之间有什么区别?
我的目录有四个文件:
1 2 3 4
Run Code Online (Sandbox Code Playgroud)
然后我跑命令
ls | tee >(ls) | more
Run Code Online (Sandbox Code Playgroud)
它会打印出来
1
3
2
4
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
但是当我跑
ls | tee>(echo hello) | more
Run Code Online (Sandbox Code Playgroud)
只有
hello
Run Code Online (Sandbox Code Playgroud)
为什么?在第一个命令中,第一个ls的结果将被定向到更多,第二个ls的结果也将被定向到更多.但是在第二个命令中,为什么ls的结果不是针对更多?
顺便说一句,是什么意思?
首先,我在命令行中测试默认编码,
>>>import sys
>>>print sys.getdefaultencoding()
'ascii'
Run Code Online (Sandbox Code Playgroud)
然后,我为变量分配了一个汉字,
>>>s="?"
>>>print s
?
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是为什么ascii可以显示汉字?
创建Flask实例时,我们总是将其__name__用作第一个参数,但是为什么呢?
class flask.Flask(import_name, static_path=None, static_url_path=None,static_folder='static', template_folder='templates', instance_path=None, instance_relative_config=False)
Run Code Online (Sandbox Code Playgroud)
官方文件说第一个参数用于查找资源,如何?
代码很简单,我只想测试&和++之间的优先级.
int main()
{
int a=10;
int *p;
int *q;
p=&++a;//error: lvalue required as unary ‘&’ operand
q=&a++;//error: lvalue required as unary ‘&’ operand
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当gcc编译它时,出现了两个错误.在我看来,这a++是一个正确的值,但它++a是一个左值,因此在使用&获取它时,它不应该是一个错误,
我对表达感到困惑*d++=*s++.如何承担它.
int main()
{
char s[20]="hello,world";
char d[20];
char *src=s;
char *des=d;
while(*src) *des++=*src++;
return 0;
}
Run Code Online (Sandbox Code Playgroud)