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) 标识符是严格区分大小写的。例如 Googlegoogle 是两个不同的标识符。

  • (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 中。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。在表达式中,将首先执行更高优先级的运算符。

![](https://images2018.cnblogs.com/blog/1306719/201809/1306719-20180902004005575-552017983.png)

C/C++ 基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  10. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

随机推荐

  1. HDU1254 bfs

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  2. shell脚本--部署应用到tomcat并启动tomcat

    #!/bin/sh #----------------------------------------------------------------------------- #备份 #------ ...

  3. 转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

    原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这 ...

  4. 在windows下如何使用密钥对远程登录服务器?

    在企业的生产中相信各位朋友都会使用远程登录服务器,这样即高效也非常方便,(服务器在西藏,没有远程技术,公司在北京,你只能到西藏与机器相伴,在这里我使用xshell软件),我们使用ssh 服务登录服务器 ...

  5. rem自适应js代码

    以后懒得写,直接复制了 var computedFz = (function(){ var designWidth = 375, rem2px = 100; function computedFz() ...

  6. 51Nod 1133 不重叠的线段 | 典型贪心

    Input示例 3 1 5 2 3 3 6 Output示例 2 题意:给出n条一维线段,求不重合的最多线段数. 解析:这个是典型的贪心算法的区间问题. 贪心策略:每次取尽可能短的区间,而且保证相互之 ...

  7. 【转】 GRASP(通用职责分配软件模式)模式

    转自:http://www.cnblogs.com/sevenyuan/archive/2010/03/05/1678730.html 及:http://blog.csdn.net/lovelion ...

  8. Redux Concepts

    Redux解决数据通信复杂问题. Store 存储数据的地方,一个应用只有一个Store. State Store对象包含所有数据. Action 一个对象,表示View的变化. Action Cre ...

  9. 【BZOJ】1385 [Baltic2000]Division expression

    [算法]欧几里德算法 [题解]紫书原题 #include<cstdio> #include<algorithm> using namespace std; ; int T,t, ...

  10. c语言目录操作总结

    =================================================== char *getcwd( char *buffer, int maxlen ); (获取当前目 ...