一.C语言中的%u是输入输出格式 说明符 ,表示按unsigned int格式输入或输出数据。unsigned int 表示无符号整数
无符号整数(unsigned integer),计算机术语,计算机里的数是用二进制表示的,最左边的这一位一般用来表示这个数是正数还是负数,这样的话这个数就是有符号整数。 无符号整数包括0和正数。无符号整数(unsigned integer),计算机术语,计算机里的数是用二进制表示的,最左边的这一位一般用来表示这个数是正数还是负数,这样的话这个数就是有符号整数。 无符号整数包括0和正数。
二. minlen
三. #define N 5
四. if (isPrime[i])
第一种情况:
假设s数组里面的值是bool类型的,那么就是true或者false,即可直接用于if语句中。
第二种情况:
存在类型转换的问题,即从其他类型转变为bool值,例如假设s数组里面的值是int类型,那么非0即为正。
c语言表示假的情况
(1)使用0表示假
(2)使用NULL表示假
(3)'\0'
(4)0.0表示假
五.C语言提供的三种预处理功能:宏定义、文件包含、条件编译.
指令 用途
# 空指令,无任何效果
#include 包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
#if 如果给定条件为真,则编译下面代码
#ifdef 如果宏已经定义,则编译下面代码
#ifndef 如果宏没有定义,则编译下面代码
#elif 如果前#if条件不为真,当前条件为真,则编译下面代码,其实就是else if的简写
#endif 结束一个#if……#else条件编译块
#error 停止编译并显示错误信息
六. a||b&&c
这个表达式涉及到两个不同的知识点,操作数的求值顺序和运算符的优先级。
1.操作数的求值顺序。大多数双目运算符两侧操作数的求值顺序,C标准是没有做规定的,例如a+b,先求a的值还是先求b的值,标准交给编译器自行决定。但对于||和&&运算符,标准有明确规定, a||b和a&&b,一定是先求左侧a的值,如果a的值就能决定||和&&的结果,那么将不会再求b的值。这个特性叫做短路运算。因此表达式a || b && c,求值顺序一定是先求a,再求b,最后求c,当中如果任何一个操作数的值可以决定表达式的最终结果,那么将停止接下来的求值。
2.运算符优先级。运算符优先级解决的是一个操作数左右两侧均有运算符时,操作数先跟哪个运算符结合的问题。例如a+b*c,由于*的优先级高于+,可以知道b会先跟*号结合,而不是先跟+号结合,因此表达式相当于a+(b*c)而不是(a+b)*c。在表达式a || b && c中,&&的优先级高于||,因此可以知道这个表达式相当于a || (b && c),即a或(b与c)的结果,而不是(a || b) && c,即(a或b)与c的结果。
七.上表中可以总结出如下规律:
- 结合方向只有三个是从右往左,其余都是从左往右。
- 所有双目运算符中只有赋值运算符的结合方向是从右往左。
- 另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符。
- C语言中有且只有一个三目运算符。
- 逗号运算符的优先级最低,要记住。
- 此外要记住,对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。
- 八C语言的\t的意思是 :水平制表符。相当于按了键盘上的TAB按键,通常宽度相当于8个空格的位置,但有些软件允许设置tab的宽度。在双引号或定界符表示的字符串中有效,在单引号表示的字符串中无效。
-
它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,如果所有的数据都紧跟在制表符后面输出。
例如://经检验这是错误程序
-
//\r在不同系统里不一样,mac里面是换行,Windows是光标置于本行行首
-
一般来说,其在终端和文件中的输出显示相当于按下键盘TAB键效果。一般系统中,显示水平制表符将占8列。同时水平制表符开始占据的初始位
扩展资料:
1、\t \r \n都是转义字符,空格就是单纯的空格,输入时可以输入空格
2、\t 的意思是 :水平制表符。将当前位置移到下一个tab位置。
3、\r 的意思是: 回车。将当前位置移到本行的开头。
4、\n 的意思是:回车换行。将当前位置移到下一行的开头。
5、\f的意思是:换页。将当前位置移到下一页的开头
在编写的c++程序中,如果是窗口,有时会一闪就消失了,如果不想让其消失,在程序中添加:
system("pause");
注意:不要再return 的语句之后加,那样就执行不到了。
分析:在编写的c++程序中,如果是窗口,有时会一闪就消失了,如果不想让其消失,在程序中添加:
system("pause");
注意:不要再return 的语句之后加,那样就执行不到了。
分析:
十.
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值
a+=1: 事实上相当于++a
a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作
++a:将a自增1并返回a 鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量
效率问题:
1.在内建数据类型时(即自增表示式的结果没有被使用,只是简单的用于递增操作),这时这两个表达式的效率是相同的。
2.在自定义数据类型时(主要指有类的情况),由于++a可以返回对象的引用,而a++一定要是返回对象的值(因为局部对象不能返回引用)。可想而知引用的开销当然比直接对对象进行操作要效率高很多,节省很多开销。
前置++和后置++存在本质上的区别:
前置++ 不会产生临时对象
后置++ 在返回时有一个临时对象的创建
在前置++和后置++ 效果相同的时候,最好使用前置++
十一. 结构体
#include <stdio.h>
struct A {
int a;
}a;
int main() {
a.a = 5;
printf("%d\n", a.a );
return 0;
}
十二.
#include <stdio.h>
int a[2][2] = { {0, 1}, {2, 3}};
int main() {
printf("%d\n", a[1][0]);
return 0;
}
a[1]即{2,3} if(c>='0'&&c<='9')
十三. 这句是什么意思 (c语言)
可以看出在这c是字符型的(char 型),不是数值型,比较的时候是相应的ASCII码比较。
你给出的那就话的意识是:如果c是字符型‘0’,‘1’,‘2’,‘3’.,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’中的某一个的时候,则执行if后面的语句。
'0'是0这个字符,但是如果在这种比较的时候参与运算的这个字符的ASCII值,0的ASCII应该是48,9的是57,if语句里面的意思是这样的,如果c大于等于0且小于等于9的话。。。为什么不直接写c>=0呢,这估计是因为c的数据类型不是int,而是char,所以用这种方式表达