又一次意识到 离散数学 在程序逻辑中的应用

1、有俩变量需要考虑,一个是srv一个是local。

有三种情况:A、srv为空/local为空  B、srv非空/local空  C、srv空/local非空  。

srv为空的返回值a为1/2 ,非空的返回值a为0 。local为空的返回值b为1/2,非空的返回值b为0。


2、用  离散数学  的角度思考,可以把a当做srv为空,!a当做srv非空。

A情况可改写成a&b ,B情况可改写成!a&b,C情况可改写成a&!b  

if ( a & b ){

……

} else if ( !a & b ) {

……

} else if ( a & !b ) {

……

}

3、例如以下代码:

	//a & b 空   !a & b srv非空local空  a & !b srv空local非空   !a & !b srv非空local非空 
	if ( a & b ) {					
		WriteLog("The ServerIp and Local Ip is NULL");
		nSetIpProcess = 1;
	} else if ( !a & b ) {
		WriteLog("The ServerIp  isn't NULL,theLocal Ip is NULL");
		SetHostsServerIp();
		nSetIpProcess = 0;
	} else if ( !b ) {				//Ip正确(第一位位不为空),得判断serverip是否为空,子网掩码是否正确,网关是否为空
		
		if( a ){						//若serverip为空localip非空,就不设置serverip,设置localip
			WriteLog("The ServerIp  is NULL,theLocal Ip isn't NULL");
		} else if ( !a ) {
			WriteLog("The ServerIp  isn't NULL,theLocal Ip isn't NULL");
			SetHostsServerIp();
		}
		
		if(c == 1 || c == 2 || c == 3)		//子网掩码不正确,二进制的1必须是连续的
		{
			WriteLog("设置失败,请输入正确的子网掩码!");
			sprintf(szPath,"%sresult\\error_InvalidNetmask.png",exepath);
			Form2->Image1->Picture->LoadFromFile(szPath);

			Form2->Left = Form1->Left+ FORM2LEFT;
			Form2->Top = Form1->Top+ FORM2TOP;
			Form2->suiButton1->Left = FORM2BUTTONLEFT;
			Form2->suiButton1->Top = FORM2BUTTONTOP;
			Form2->ShowModal();	//"设置失败,请输入正确的子网掩码!"
			return ;
		}
		else if(c == 0)			//子网掩码正确
		{
			if(d == 1 || d == 2)	//网关为空
			{
				if(a == 0)		//如果服务器Ip正确,将服务器Ip赋给网关
				{
					strcpy(szGateway,szServerIp);	
				}
				else				//如果服务器Ip不正确,将Ip赋给网关
				{
					strcpy(szGateway,szIp);
				}
			}
		}
		unsigned long ulThreadResult = (unsigned long)_beginthreadex(NULL,0,(unsigned (__stdcall*)(void*))SetIp,NULL,0,NULL);
	} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值