- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C++程序的执行顺序结构以及关系和逻辑运算符讲解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
C++顺序结构程序 【例】求一元二次方程式ax2+bx+c=0的根。a,b,c的值在运行时由键盘输入,它们的值满足b2-4ac≥0。根据求x1,x2的算法。它可以编写出以下C++程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
#include <cmath> //由于程序要用到数学函数sqrt,故应包含头文件cmath
using
namespace
std;
int
main( )
{
float
a,b,c,x1,x2;
cin>>a>>b>>c;
x1=(-b+
sqrt
(b*b-4*a*c))/(2*a);
x2=(-b-
sqrt
(b*b-4*a*c))/(2*a);
cout<<
"x1="
<<x1<<endl;
cout<<
"x2="
<<x2<<endl;
return
0;
}
|
运行情况如下
1
2
3
|
4.5 8.8 2.4 ↙
x1=-0.327612
x2=-1.17794
|
如果程序中要用到数学函数,都要包含头文件cmath(也可以用老形式的头文件math.h,但提倡使用C++新形式的头文件)。在写程序时,一定要注意将数学表达式正确地转换成合法的C++表达式.
可以看到:顺序结构的程序中的各执行语句是顺序执行的。这种程序最简单,最容易理解.
C++关系运算和逻辑运算(关系运算符和逻辑运算符) 往往要求根据某个指定的条件是否满足来决定执行的内容。例如,购物在1000元以下的打九五折,1000元及以上的打九折.
C++提供if语句来实现这种条件选择。如:
1
2
3
|
if
amount<1000 tax=0.95;
//amount代表购物总额,tax代表折扣
else
tax=0.9;
//若amount<1000,条件满足,tax=0.95,否则tax=0.9
pay=amount*tax;
//pay为实付款
|
关系运算和关系表达式 。
上面if语句中的“amount<1000”实现的不是算术运算,而是关系运算。实际上是比较运算,将两个数据进行比较,判断比较的结果。“amount<1000”就是一个比较式,在高级语言中称为关系表达式,其中“>”是一个比较符,称为关系运算符.
C++的关系运算符有:
关于优先次序: 前4种关系运算符(<,<=,>,>=)的优先级别相同,后两种也相同。前4种高于后两种。例如,“>”优先于“==”。而“>”与“<”优先级相同。 关系运算符的优先级低于算术运算符。 关系运算符的优先级高于赋值运算符.
例如:
用关系运算符将两个表达式连接起来的式子,称为关系表达式。关系表达式的一般形式可以表示为:
1
|
表达式 关系运算符 表达式
|
其中的“表达式”可以是算术表达式或关系表达式?逻辑表达式?赋值表达式?字符表达式。例如,下面都是合法的关系表达式:
1
|
a>b, a+b>b+c,(a==3)>(b==5), 'a'<'b', (a>b)>(b<c)
|
关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5==3”的值为“假”,“5>=0”的值为“真”。在C和C++中都用数值1代表“真”,用0代表“假”。如果有以下赋值表达式:
逻辑常量和逻辑变量 。
C语言没有提供逻辑型数据,关系表达式的值(真或假)分别用数值1和0代表。C++增加了逻辑型数据。逻辑型常量只有两个,即false(假)和true(真).
逻辑型变量要用类型标识符bool来定义,它的值只能是true和false之一。如 。
1
2
|
bool
found, flag=
false
;
//定义逻辑变量found和flag,并使flag的初值为false
found=
true
;
//将逻辑常量true赋给逻辑变量found
|
由于逻辑变量是用关键字bool来定义的,因此又称为布尔变量。逻辑型常量又称为布尔常量。所谓逻辑型,就是布尔型.
设立逻辑类型的目的是为了看程序时直观易懂.
在编译系统处理逻辑型数据时,将false处理为0,将true处理为1。因此,逻辑型数据可以与数值型数据进行算术运算.
如果将一个非零的整数赋给逻辑型变量,则按“真”处理,如 。
1
2
|
flag=123;
//赋值后flag的值为true
cout<<flag;
|
输出为数值1。 逻辑运算和逻辑表达式 。
有时只用一个关系表达式还不能正确表示所指定的条件.
C++提供3种逻辑运算符: (1) && 逻辑与(相当于其他语言中的AND) (2) || 逻辑或(相当于其他语言中的OR) (3) !逻辑非(相当于其他语言中的NOT) 。
逻辑运算举例如下
在一个逻辑表达式中如果包含多个逻辑运算符,按以下的优先次序: (1) !(非)→ &&(与)→ ?(或),即“!”为三者中最高的。 (2) 逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符.
例如
将两个关系表达式用逻辑运算符连接起来就成为一个逻辑表达式,上面几个式子就是逻辑表达式。逻辑表达式的一般形式可以表示为 。
1
|
表达式 逻辑运算符 表达式
|
逻辑表达式的值是一个逻辑量“真”或“假”。前面已说明,在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个逻辑量是否为“真”时,采取的标准是: 如果其值是0就认为是“假”,如果其值是非0就认为是“真”。例如: (1) 若a=4,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非”运算,得“假”,“假”以0代表。 (2) 若a=4,b=5,则a && b的值为1。因为a和b均为非0,被认为是“真” 。 (3) a,b值同前,a-b||a+b的值为1。因为a-b和a+b的值都为非零值。 (4) a,b值同前,!a || b的值为1。 (5) 4 && 0 || 2 的值为1.
在C++中,整型数据可以出现在逻辑表达式中,在进行逻辑运算时,根据整型数据的值是0或非0,把它作为逻辑量假或真,然后参加逻辑运算.
通过这几个例子可以看出: 逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(按“真”对待)。如果在一个表达式中的不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象.
实际上,逻辑运算符两侧的表达式不但可以是关系表达式或整数(0和非0),也可以是任何类型的数据,如字符型?浮点型或指针型等。系统最终以0和非0来判定它们属于“真”或“假”。例如'c ' && 'd'的值为1.
熟练掌握C++的关系运算符和逻辑运算符后,可以巧妙地用一个逻辑表达式来表示一个复杂的条件。例如,要判别某一年(year)是否为闰年。闰年的条件是符合下面两者之一: ①能被4整除,但不能被100整除。②能被100整除,又能被400整除。例如2004? 2000年是闰年,2005? 2100年不是闰年.
可以用一个逻辑表达式来表示
1
|
(year % 4 == 0 && year % 100 != 0) || year % 400 == 0
|
当给定year为某一整数值时,如果上述表达式值为真(1),则year为闰年;否则year为非闰年。可以加一个“!”用来判别非闰年
1
|
!((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
|
若表达式值为真(1),year为非闰年。也可以用下面的逻辑表达式判别非闰年
1
|
(year % 4 != 0) || (year % 100 == 0 && year % 400 !=0)
|
若表达式值为真,year为非闰年。请注意表达式中右面的括号内的不同运算符(%,!,&&,==)的运算优先次序.
最后此篇关于C++程序的执行顺序结构以及关系和逻辑运算符讲解的文章就讲到这里了,如果你想了解更多关于C++程序的执行顺序结构以及关系和逻辑运算符讲解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我目前正在尝试基于哈希表构建字典。逻辑是:有一个名为 HashTable 的结构,其中包含以下内容: HashFunc HashFunc; PrintFunc PrintEntry; CompareF
如果我有一个指向结构/对象的指针,并且该结构/对象包含另外两个指向其他对象的指针,并且我想删除“包含这两个指针的对象而不破坏它所持有的指针”——我该怎么做这样做吗? 指向对象 A 的指针(包含指向对象
像这样的代码 package main import "fmt" type Hello struct { ID int Raw string } type World []*Hell
我有一个采用以下格式的 CSV: Module, Topic, Sub-topic 它需要能够导入到具有以下格式的 MySQL 数据库中: CREATE TABLE `modules` ( `id
通常我使用类似的东西 copy((uint8_t*)&POD, (uint8_t*)(&POD + 1 ), back_inserter(rawData)); copy((uint8_t*)&PODV
错误 : 联合只能在具有兼容列类型的表上执行。 结构(层:字符串,skyward_number:字符串,skyward_points:字符串)<> 结构(skyward_number:字符串,层:字符
我有一个指向结构的指针数组,我正在尝试使用它们进行 while 循环。我对如何准确初始化它并不完全有信心,但我一直这样做: Entry *newEntry = malloc(sizeof(Entry)
我正在学习 C,我的问题可能很愚蠢,但我很困惑。在这样的函数中: int afunction(somevariables) { if (someconditions)
我现在正在做一项编程作业,我并没有真正完全掌握链接,因为我们还没有涉及它。但是我觉得我需要它来做我想做的事情,因为数组还不够 我创建了一个结构,如下 struct node { float coef;
给定以下代码片段: #include #include #define MAX_SIZE 15 typedef struct{ int touchdowns; int intercepti
struct contact list[3]; int checknullarray() { for(int x=0;x<10;x++) { if(strlen(con
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Empty “for” loop in Facebook ajax what does AJAX call
我刚刚在反射器中浏览了一个文件,并在结构构造函数中看到了这个: this = new Binder.SyntaxNodeOrToken(); 我以前从未见过该术语。有人能解释一下这个赋值在 C# 中的
我经常使用字符串常量,例如: DICT_KEY1 = 'DICT_KEY1' DICT_KEY2 = 'DICT_KEY2' ... 很多时候我不介意实际的文字是什么,只要它们是独一无二的并且对人类读
我是 C 的新手,我不明白为什么下面的代码不起作用: typedef struct{ uint8_t a; uint8_t* b; } test_struct; test_struct
您能否制作一个行为类似于内置类之一的结构,您可以在其中直接分配值而无需调用属性? 前任: RoundedDouble count; count = 5; 而不是使用 RoundedDouble cou
这是我的代码: #include typedef struct { const char *description; float value; int age; } swag
在创建嵌套列表时,我认为 R 具有对列表元素有用的命名结构。我有一个列表列表,并希望应用包含在任何列表中的每个向量的函数。 lapply这样做但随后剥离了列表的命名结构。我该怎么办 lapply嵌套列
我正在做一个用于学习目的的个人组织者,我从来没有使用过 XML,所以我不确定我的解决方案是否是最好的。这是我附带的 XML 文件的基本结构:
我是新来的 nosql概念,所以当我开始学习时 PouchDB ,我找到了这个转换表。我的困惑是,如何PouchDB如果可以说我有多个表,是否意味着我需要创建多个数据库?因为根据我在 pouchdb
我是一名优秀的程序员,十分优秀!