C/C++ 基础知识
C/C++ 基础知识
C 语言优秀学习网站
C 语言的注释
- 单行注释
/* comment goes here */
// comment goes here
- 多行注释
/*
* comment goes here
*/
- Example
// 这是一个倒序 9x9 乘法表
#include <stdio.h>
int main()
{
/* 定义了 i,j,result 三个局部变量 */
int i, j, result;
for (i = 9; i > 0; i--) {
for (j = 1; j <= i; j++) {
printf("%d*%d=%d\t", i, j, i * j);
}
printf("\n");
}
return 0;
}
// 结果
/*
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
4*1=4 4*2=8 4*3=12 4*4=16
3*1=3 3*2=6 3*3=9
2*1=2 2*2=4
1*1=1
*/
C keywords
Keywords defined by ANSI and ISO C90.
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Words added by ISO C99.(5 个)
_Bool _Imaginary restrict _Complex inline
Words added by ISO C11.(7 个)
Alignas _Generic _Thread_local _Alignof _Noreturn _Atomic _Static_assert
C 语言关键字
C 语言的标识符
C 语言规定,标识符可以是字母 (A~Z,a~z)
、数字 (0~9)
、下划线_
组成的字符串,并且第一个字符
必须是字母
或下划线
。
在使用标识符时还有注意以下几点
(1) 标识符的长度最好不要超过 8 位,因为在某些版本的 C 中规定标识符前 8 位有效,当两个标识符前 8 位相同时,则被认为是同一个标识符。
(2) 标识符是严格区分大小写的。例如
Google
和google
是两个不同的标识符。(3) 标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。
(4) 标识符不能是 C 语言的
关键字
。
C 语言数据类型
参考资料
在 C 编程语言中,数据类型分类如下...
- 主数据类型(基本数据类型或预定义数据类型)
- 派生数据类型(辅助数据类型或用户定义的数据类型)
- 枚举数据类型
- void 数据类型
Primary Datatypes
- Integer Datatype
- Floating Point Datatype
- Double Datatype
- Character Datatype
Integer Datatype
Floating Point Datatypes
- float
- double
Character Datatype
void Datatype
void 数据类型表示没有值或没有值。通常,void 用于指定不返回任何值的函数。我们还使用 void 数据类型来指定函数的空参数。
Enumerated Datatype
枚举数据类型是用户定义的数据类型,由整数常量组成,每个整数常量都有一个名称。关键字enum
用于定义枚举数据类型。
Derived Datatypes
- Arrays
- Structures
- Unions
- Enumeration
Output Functions in C
参考资料
C 编程语言提供以下内置输出功能...
- 1.printf()
- 2.putchar()
- 3.puts()
- 4.fprintf()
printf() function
#include <stdio.h>
int main()
{
int i = 10;
float x = 5.5;
printf("%d %f\n", i, x);
return 0;
}
#include <stdio.h>
int main(){
int i = 10;
float x = 5.5;
printf("Integer value = %d, float value = %f\n",i, x);
return 0;
}
/* C 编程语言中的每个函数都必须具有返回值。printf()函数也有整数作为返回值。
printf()函数返回一个与其打印的字符总数相等的整数值。 */
#include <stdio.h>
int main(){
int i;
i = printf("btechsmartclass");
printf(" is %d number of characters.\n",i);
}
#include <stdio.h>
int main()
{
printf("Welcome to\n");
printf("btechsmartclass\n");
printf("the perfect website for learning\n");
return 0;
}
putchar() function
putchar()函数用于在输出屏幕上显示单个字符。putchar()函数打印作为参数传递给它的字符,并返回与返回值相同的字符。此功能仅用于打印单个字符。要打印多个字符,我们需要多次写入或使用循环语句。
#include <stdio.h>
int main(){
char ch = 'A';
putchar(ch);
putchar('\n');
}
puts() function
puts()函数用于在输出屏幕上显示字符串。puts()函数打印字符串或字符序列,直到换行符。
#include <stdio.h>
int main(){
char name[30];
printf("\nEnter your favourite website: ");
gets(name);
puts(name);
}
C 语言中的常数
参考资料
在 C 编程语言中,常量类似于变量,但常量在程序执行期间仅保存一个值。这意味着,一旦将值赋值给常量,则在程序执行期间不能更改该值。将值分配给常量后,它将在整个程序中得到修复。常数可以定义如下...
常量是一个命名的内存位置,它在整个程序执行过程中只保存一个值。
In C programmig language, constant can be of any datatype like integer, floating point, character, string and double etc.
- 整数常量
例子:
125 -----> 十进制整数常量
O76 -----> 八进制整数常量
OX3A -----> 十六进制十进制整数常量
50u -----> 无符号整数常量
30l -----> 长整数常数
100ul -----> 无符号长整数常量
- 浮点常数
浮点常量必须包含整数和小数部分。有时它也可能包含指数部分。当浮点常量以指数形式表示时,该值必须以“e”或“E”为后缀。
例:浮点值 3.14 以指数形式表示为 3E-14。
- 字符常量
字符常量是用单引号括起来的符号。字符常量的最大长度为一个字符。
例:'A' '2' '+'
- 字符串常量
字符串常量是用双引号括起来的字符,数字,特殊符号和转义序列的集合。
我们在一行中定义字符串常量如下:“这是 btechsmartclass”
在 C 中创建常量
在 C 编程语言中,可以使用两个概念创建常量...
- 1.使用 'const' 关键字
- 2.使用 '#define' 预处理器
1.使用 'const' 关键字
我们使用 'const' 关键字创建任何数据类型的常量。要创建常量,我们在变量声明前加上 'const' 关键字。
使用 'const' 关键字创建常量的一般语法如下...
const 数据类型 constantName;
要么
const 数据类型 constantName = value;
例:const int x = 10;
这里,'x' 是一个固定值为 10 的整数常数。
- 示例程序
#include <stdio.h>
void main(){
int i = 9 ;
const int x = 10 ;
i = 15 ;
x = 100 ; // creates an error
printf("i = %d\nx = %d", i, x ) ;
}
上面的程序给出了一个错误,因为我们试图改变常量变量值(x = 100)。
2.使用 '#define' 预处理器
我们还可以使用 '#define' 预处理程序指令创建常量。当我们使用这个预处理器指令创建常量时,它必须在程序的开头定义(因为所有预处理器指令必须在 gloabal 声明之前写入)。
我们使用以下语法使用 '#define' 预处理程序指令创建常量...
#define CONSTANTNAME value
例 #define PI 3.14
这里,PI 是一个值为 3.14 的常量
- 示例程序
#include <stdio.h>
#defien PI 3.14
void main(){
int r, area ;
printf("Please enter the radius of circle : ") ;
scanf("%d", &r) ;
area = PI * (r * r) ;
printf("Area of the circle = %d", area) ;
}
自增与自减运算符
自增运算符为“++”,其功能是使变量的值自增 1;
自减运算符为“--”,其功能是使变量值自减 1。
它们经常使用在循环中,自增自减运算符有以下几种形式:
- Question 1
#include <stdio.h>
int main() {
int i = 3;
int a = i ++; // a = 3, i = 4
printf("a = %d, i = %d\n", a, i);
int b = ++ a; // b = 4, a = 4
printf("a = %d, b = %d\n", a, b);
return 0;
}
- Question 2
#include <stdio.h>
int main() {
int a = 10; // a 被赋值为 10
int b = ++ a; // b 值为 11,因为 a 是预先递增的(现在 a = 11 且 b = 11)
int c = a ++; // c 值是 11,a 值是 12
printf("a = %d, b = %d, c = %d\n", a, b, c); // a = 12, b = 11, c = 11
return 0;
}
- Question 3
#include <stdio.h>
#include <conio.h>
int main() {
int x, a, b, c;
a = 2;
b = 4;
c = 5;
x = a -- + b ++ - ++ c ;
printf("x = %d\n", x); // x = 0
printf("a = %d,b = %d,c = %d\n", a, b, c); // a = 1,b = 5,c = 6
getch();
return 0;
}
- Question 4
#include <stdio.h>
#include <conio.h>
int main() {
int a, b, c, d;
a = 2, c = 2;
b = a++*++a;
d = ++c * c++;
printf("a = %d, b = %d\n", a, b);
printf("c = %d, d = %d\n", c, d);
getch();
return 0;
}
/*
gcc 5 result
a = 4, b = 9
c = 4, d = 9
*/
- Question 5
/*
添加 3 个变量可以分解为 2 个步骤。
temp = ++ a + ++ a;
b = temp + ++ a;
第一个++ a 使值为 6,第二个++ a 使它成为 7。因为 temp 中使用的两个变量都指向 a,temp = 7 + 7 = 14。
下一步很简单,b = temp + 8,这使得 b = 22。
*/
#include <stdio.h>
#include <conio.h>
int main() {
int a = 5, b;
b = ++a + ++a + ++a;
printf("a = %d,b = %d", a, b); // a = 8,b = 22
getch();
return 0;
}
- Question 6
面试官最喜欢的技术面试问题之一:
int a = 1;
int b = 2;
int c == a +++ b;
它编译吗?如果没有,需要改变什么。运行后 a,b,c 的值为多少?
#include <stdio.h>
#include <conio.h>
int main() {
int a = 1;
int b = 2;
int c = a +++ b;
printf("a = %d,b = %d,c = %d\n", a, b, c); // a = 2,b = 2,c = 3
getch();
return 0;
}
注意:无论是 a++还是++a 都等同于 a=a+1,在表达式执行完毕后 a 的值都自增了 1,无论是 a--还是--a 都等同于 a=a-1,在表达式执行完毕后 a 的值都自减少 1。
C 语言运算符优先级
运算符优先级确定表达式的执行顺序,并决定如何计算表达式。某些运算符的优先级高于其他运算符;
例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2; 这里,x 被赋值为 13,而不是 20,因为 operator * 的优先级高于 +,所以它首先乘以 3 * 2 然后加到 7 中。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。在表达式中,将首先执行更高优先级的运算符。

C/C++ 基础知识的更多相关文章
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- APP测试入门篇之APP基础知识(001)
前言 最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...
随机推荐
- 题解【luogu4168 [Violet]蒲公英】
Description 给出一个长度为 \(n\) 序列 \(a\) ,\(m\) 次询问,每次询问区间 \([l,r]\) 里的众数(出现次数最多的数).若有多个,输出最小的. \(a_i \leq ...
- Oracle raw类型
RAW(size):长度为size字节的原始二进制数据,size的最大值为2000字节; RAW类型好处:在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一 ...
- Robotframework Web自动化实战课程
想学习的小伙伴,现在可以报名了!!!7月1日正式开课本期课程主要是web自动化为主,根据平时工作经验整理的一套流程以及使用过程中常见的问题总结.学完后能很快上手,即学即用,课后遇到问题在线解答,远程协 ...
- JavaScript之typedof,instanceof,Array.isArray()
typedof value检测对象类型. value instanceof Array检测a对象是否由b对象类型 Array.isArray(value)在两个框架中判断是否为数组类型.
- rsync的命令参数【转】
本篇文章,我们只介绍rsync的命令参数. rsync参数的具体解释如下: -v, –verbose 详细模式输出 -q, –quiet 精简输出模式 -c, –checksum 打开校验开关,强制对 ...
- C语言数据结构-栈
一.栈的定义 栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加). 移出元 ...
- 51nod 1766 树上的最远点对——线段树
n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j& ...
- 【51NOD-0】1137 矩阵乘法
[算法]简单数学 [题解] 对于A*B=C C中第i行第j列的数字由A中第i行和B中的j列的数字各自相乘后相加得到. 所以两个矩阵能相乘要求A的列数等于B的行数,复杂度为O(n3). #include ...
- 暑假集训——cf热身赛部分题有感加其题解
刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...
- 初识费用流 模板(spfa+slf优化) 餐巾计划问题
今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...