本文主要是介绍C discovery,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程环境:
uname -a: Linux thinkhy-desktop 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
gcc -v: gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
1 printf("%c",0); 什么也不输出
printf("%s",0); 输出为 (null)
2 int 与unsigned int 做运算时,int会自动转换成unsigned int类型。
把下面的代码跑一遍就知道了。
#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d/n",array[d+1]);
return 0;
}
3 C语言中,变量名、函数名、宏命名中的合法字符都是英文字符、数字、下划线,所以下面这样的函数名是错误的:
void OS_UBUNTU-UX_print()
4 stdou标准输出是行缓冲的,所以和 stdout和stderr混用的时候要注意及时用‘/n'刷新。
下面的代码是不会输出hello-out的,详见APUE中文第二版Page110
#include <stdio.h> #include <unistd.h> int main()
{
while(1)
{
fprintf(stdout,"hello-out");
fprintf(stderr,"hello-err");
sleep(1);
}
return 0;
}
5. 编译数据库模块时出现这样的错误:
dbapi.c|1019| error: static declaration of ‘nsr_db_printerr’ follows non-static declaration
dbapi.c|989| error: previous implicit declaration of ‘nsr_db_printerr’ was here
什么意思? 原来是在static函数声明之前,使用了static函数。没想到C语言还有这个讲究,有两个解决办法:
1> 在使用之前声明static函数
2> 去掉函数的static修饰。
6
看到一段C代码中有类似的写法,很不解,冒号为什么用在这,
xmlSAXHandler saxHandler = {
internalSubset: internalSubset,
isStandalone: isStandalone,
hasInternalSubset: hasInternalSubset,
hasExternalSubset: hasExternalSubset,
resolveEntity: resolveEntity,
getEntity: getEntity,
.... ...
}
自己写了段测试代码才弄明白,冒号是用来赋值的:
#include <stdio.h>
struct sax {
int a;
int b;
};
typedef struct sax Sax;
int main() {
int aa=23,b=20;
Sax s = {a:b,b:aa}; /*s.a = b,s.b = aa*/
printf("%d,%d/n",s.a,s.b);
}
这篇关于C discovery的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!