1。关于switch。 switch后的左{后虽可以定义语句,但是永远不会执行
#include<iostream>
using namespace std;
int main()
{
int i=10,j=1;
switch(i)
{
j=30; //这个语句不会执行
case 10: cout<<j;
};
return 0;
}
2。static在函数内部表示该变量在各个调用间一直保持延续性
在函数这一级表示该函数只对本文件可见
3.输出16进制和8进制形式的数
#include <stdio.h>
int main(void)
{
int x = 100;
printf("dec = %d; octal = %o; hex = %x/n", x, x, x);
printf("dec = %d; octal = %#o; hex = %#x/n", x, x, x);
return 0;
}
Compiling and running this program produces this output:
dec = 100; octal = 144; hex = 0x64 dec = 100; octal = 0144; hex = 0x64
4./的使用
#include <stdio.h> int main(void) { printf("Here's one way to print a "); printf("long string./n"); printf("Here's another way to print a / long string./n"); printf("Here's the newest way to print a " "long string./n"); /* ANSI C */ return 0; }Here is the output:
Here's one way to print a long string. Here's another way to print a long string. Here's the newest way to print a long string.
5。关于scanf(“%d“,&ia);
scanf函数试图接受第一个非空格且换行浮或'+','-'符号,保存到 ia中,但是如果输入的不是数字型
的话,比如:a 就会把a放回输入流中。那么ia的值随机6.去除字符数组开头结尾的空格(使用scanf函数)#include <stdio.h>7.字符串常量
int main()
{
char s[]=" abc ";
char s1[40];
sscanf(s,"%s",s1);
printf("%send/n",s1);
return 0;
}
char* str1 = “Hello“; char* str2 = “Hello“; *str1 = ‘P‘; cout << str2 << endl;“猜猜运行结果是什么?”,Solmyr 一边调整工程设置,一边问道。
“这还用问吗?当然是输出 Hello 了。”
“回答错误,正确答案是 ……”,Solmyr 按下了运行按钮,屏幕显示的居然是 Pello !。
zero 大为诧异,挠着头试图找出其中的逻辑,突然间灵光一闪:“我明白了!str1 和 str2
实际指向同一段内存!因为 C/C++ 语言在处理 Hello 字符串的时候把它当作常量,
所以就做了优化,只保存了一份 Hello !是不是这样!”zero 兴奋的转向 Solmyr。
“嗯,看起来有时候你也不是那么菜么”,Solmyr 赞许的点头,“不过你还是说错了一点:
这个不是 C/C++ 语言的做法,是这个编译器的做法。简单的说,你如果要对这种字符串写的话,
其结果如何,是没有定义的。所谓没有定义,就是 C/C++ 语言不保证会得到怎样的结果,
可能这样也可能样,完全决定于你的编译器作者怎么想。想想看吧,哪天你的程序出现了
古怪的问题 —— 比如显示信息出现了混乱 —— 起因却是你在无关的地方写了一个字符串,
会怎样?这是维护时最大的恶梦之一。现在你明白危害在哪里了?”