首页 > 其他分享 >C语言中if else组合

C语言中if else组合

时间:2024-09-22 13:49:52浏览次数:3  
标签:code 组合 0.0 C语言 program else 写法 condition

一 bool变量与“零值”进行比较

bool 变量与“零值”进行比较的 if 语句怎么写? bool bTestFlag = FALSE;//想想为什么一般初始化为 FALSE 比较好?

A), if(bTestFlag == 0); if(bTestFlag == 1);

B), if(bTestFlag == TRUE); if(bTestFlag == FLASE);

C), if(bTestFlag); if(!bTestFlag); 哪一组或是那些组正确呢?我们来分析分析:

A)写法:bTestFlag 是什么?整型变量?如果要不是这个名字遵照了前面的命名规范, 肯怕很容易让人误会成整型变量。

FLASE 的值大家都知道,在编译器里被定义为 0;但 TRUE 的值呢?都是 1 吗?很不幸,不都是 1。Visual C++定义为 1,而它的同胞兄弟 Visual Basic 就把 TRUE 定义 为-1.那很显然,这种写法不好。

 B,C写法我个人认为都对,最优的写法是C写法,代码简洁,易于理解。

大家都知道 if 语句是靠其后面的括号里的表达式的值来进行分支跳转的。表达式如果为真,则执行 if 语句后面紧跟的代码;否则不执行。那显然,C组的写法很好,既不会引起误会,也不会由于 TRUE 或 FLASE 的不同定义值而出错。

 float 变量与“零值”进行比

float 变量与“零值”进行比较的 if 语句怎么写?

float fTestVal = 0.0;

A), if(fTestVal == 0.0); if(fTestVal != 0.0);

B), if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON)); //EPSINON 为定义好的 精度。 哪一组或是那些组正确呢?我们来分析分析:

float 和 double 类型的数据都是有精度限制的,这样直接拿来与 0.0 比,能正确吗?

明显 不能,看例子: Π的值四舍五入精确到小数点后 10 位为:3.1415926536,你拿它减去 0.00000000001 然后再四舍五入得到的结果是多少?你能说前后两个值一样吗? EPSINON 为定义好的精度,如果一个数落在[0.0-EPSINON,0.0+EPSINON] 这个闭区间 内,我们认为在某个精度内它的值与零值相等;否则不相等。扩展一下,把 0.0 替换为你想 比较的任何一个浮点数,那我们就可以比较任意两个浮点数的大小了,前提是在某个精度内比较。

注意选择一个适当的误差范围取决于你的具体需求和浮点数的精度要求。

float floatValue = 0.0; // 假设这是你的 float 变量
float epsilon = 0.0001; // 定义一个小的误差范围

	if (fabs(floatValue - 0.0) < epsilon) {
		// 执行当 floatValue 在误差范围内等于零时的逻辑
		printf("结果很精确");
	}
	else
	{
		printf("结果有误差");
	}

指针变量与“零值”进行比较 指针变量与“零值”进行比较的 if 语句怎么写?

int * p = NULL;//定义指针一定要同时初始化,指针与数组那章会详细讲解。

A), if(p == 0); if(p != 0);

B), if(p); if(!p);

C) , if(NULL == p); if(NULL != p);

哪一组或是那些组正确呢?我们来分析分析:

A)写法:p 是整型变量?容易引起误会,不好。尽管 NULL 的值和 0 一样,但意义不同。

B)写法:p 是 bool 型变量?容易引起误会,不好。

C)写法:这个写法才是正确的,但样子比较古怪。为什么要这么写呢?是怕漏写一个 “=”号:if(p = NULL),这个表达式编译器当然会认为是正确的,但却不是你要表达的意思。 所以,非常推荐这种写法。

 else 到底与哪个 if 配对呢?

else 常常与 if 语句配对,但要注意书写规范,看下面例子 

void test01()
{
	printf("hhh");
}
int main()
{
	int x, y;
	x = 0;
	y = 0;
	if (0 == x)
	/*{
		printf("world");
	}*/
	if (0 == y)
	{
		test01();
	}
	else {
		printf("hello");
	}
	return 0;
}

 上面这段代码很容易造成误解,最终打印结果是hhh,因为先满足0==x第一个if语句条件才有下面的第二个if语句判断和else语句分支。若y==0则调用test01函数打印hhh,否则打印hello。

提倡的的风格不提倡的风格

void Function(int x)

{

//program code

}

void Function(int x){

//program code

}

if (condition)

{

//program code

}

else

{

//program code

}

if (condition){

//program code

}else{

//program code

}

或:

if (condition)

//program code

else //program code

或:

if (width < height) dosomething();

do

{

//program code

}

while (condition);

do{

//program code

}while (condition);

while (condition)

{

//program code

}

while (condition){

//program code

}

for (initialization; condition; update)

{

//program code

}

for (initialization;condition; update){

//program code

}

标签:code,组合,0.0,C语言,program,else,写法,condition
From: https://blog.csdn.net/2301_80950699/article/details/142420001

相关文章

  • C语言内容函数大揭秘:轻松掌握,编程无忧(下)
    大家们好,废话不多说,我们接着继续来讲我们函数的章节。六.数组做函数参数在使用函数解决问题的时候,难免会将数组作为参数传递给函数,在函数内部对数组进行操作。比如:写一个函数将一个整型数组的内容,全部置为﹣1,再写一个函数打印数组的内容。1#include<stdio.h>23int......
  • 了解C语言
    1.什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目的是提供一种能以简易的方式编程,处理低级储存器,产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言是一门面向过程的计算机编程语言,C++,JAVA等面向对象的编程语言有所不同。......
  • C语言函数的形参传递
    在C语言中,函数形参的传递分为值传递和地址传递(指针传递)。这两种传递方式决定了函数内如何使用这些参数,并且在函数外部的影响也不同。下面详细解释C语言中形参的传递机制和具体内容。1.值传递在C语言中,默认的传递方式是值传递。当我们调用一个函数时,函数的形参接收......
  • 在 Effect-TS 中组合选项:实用指南
    effect-ts提供了几种在函数式编程上下文中组合可选值或选项的强大方法。无论您想要将多个选项配对在一起还是将选项内的函数应用于其他值,该库都提供了多种方法来简化这些操作。在本文中,我们将探讨组合选项的四个关键函数:o.product、o.productmany、o.all和o.ap。示例1:使......
  • C语言的文件函数
    此篇文章主要对C语言中的"文件读写函数"进行详细的刨析~通过此篇文章能够了解并学习到:"字符读写函数","文本行读写函数 ","格式化读写函数","二进制读写函数","文件随机读取函数 ","读取结束原因函数"等相关知识~(上一篇:文件基础知识传送门:C语言的文件基础知识-CSDN......
  • C语言-文件操作-一些我想到的、见到的奇怪的问题
    博客主页:【夜泉_ly】本文专栏:【C语言】欢迎点赞......
  • c语言内存函数
    1、memcpyvoid*memcpy(void*destination,constvoid*source,size_tnum);函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。这个函数在遇到'\0'的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定......
  • C语言结构体
    目录结构体含义解释结构的声明结构体变量的创建和初始化结构的特殊声明结构的自引用结构体内存对齐对齐规则例子示范为什么存在内存对齐1.平台原因:2.性能原因:3.总体来说:修改默认对齐数 结构体传参 结构体含义解释1.结构是⼀些值的集合,这些值称为成......
  • 理解C语言之深入理解指针(一)上
    目录1.内存和地址1.1内存1.2究竟该如何理解编址2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引⽤操作符(*)2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引⽤操作符2.3指针变量的⼤⼩3.指针变量类型的意义3.1指针的解引⽤3.2指针+-整数3.3void*......
  • 理解C语言之深入理解指针(一)下
    目录5.指针运算5.1指针+-整数5.2指针-指针5.3指针的关系运算6.野指针6.1野指针成因6.2如何规避野指针6.2.1指针初始化6.2.2⼩⼼指针越界6.2.3指针变量不再使⽤时,及时置NULL,指针使⽤之前检查有效性6.2.4避免返回局部变量的地址7.assert断⾔8.指针......