Hi 各位大大

這應該算是骨灰級的老問題了

int i = 1;

if ( i == 1 )
printf ("yes");
else
printf ("no");

PS: 可彈性調整 i 裡面的值 0-65535

如果改寫成 完全拋棄不使用 if 或是 ? : 之類的判斷式, 有其他寫法可以得到一樣的結果嗎?
任何語言都可以, 感謝各位大大 ^O^

1.switch case
2.do while

應該不會想要用for迴圈寫吧
別自討苦吃阿...



只要 i 不是 1 都會印出 No

char* text[2] = { "No", "Yes" };
int i = 1;
printf( "%s\n", text[i&!(i&0xFFFE)] );
巨乳は夢が詰まってるから大きい、貧乳はみんなに夢を与えているから小さいんだ!

kaworucloud wrote:
(恕刪)

printf( "%s\n", text[i&!(i&0xFFFE)] );


紅色括弧的運算應該也隱含了 if 的運算吧 ?
int i = 1;

for(j=i,j<1,j++)
{printf ("no");}
for(j=i,j>0,j--)
{printf ("yes");}

剛剛無聊就...

stan wu wrote:
Hi 各位大大這應該...(恕刪)


硬體有種東西叫邏輯閘,軟體所有運算包含迴圈判斷式都是用 NOT OR AND 做出來的

你可以玩玩看
想到一個:查表法

腳本語言:shell script

首先建一個資料表 data.txt

內容為以下:

0 no
1 yes
2 no
3 no
............
65535 no


總共要 65536 行......

然後 shell script 的部份:

i=1
cat data.txt | grep "$i" | cut -d " " -f 2

列出 data.txt |
搜尋含有 $i 變數字串的行 |
剪接:以「空白」為分隔,取第二個字串

完全沒有用到 if ,確定可行

只是.....有點蠢

如果 i 的數值範圍是有限的,查表法就 ok
範圍愈大,運行速度會愈慢
「資料表」也可以用程式去生成


ps.
忽然想到,這有點偷雞,雖然沒用到 if,但 grep 這支搜尋字串的程式,本身應該有用到類似 if 的邏輯運算。
你不對了
所有programming language都是由parsing / Syntax analysis來判定
IF只不過是一個operator/statement, 如果你自創一個語言, 自訂為FI也可以
而operator下面還有最基礎的判定方法, OR AND STRING INT...

相似IF的OPERATOR有switch case /

hotass196 wrote:
紅色括弧的運算應該也...(恕刪)

stan wu wrote:
int i = 1;

if ( i == 1 )
printf ("yes");
else
printf ("no");


int i = ?;
char str[]={'y','e','s',0,'n','o',0};

i--;i=i|0;i=i*4;
printf("%s",&str[i]);
yinhell wrote:
i--;
i=i|0;
i=i*4;

這三述句與 i = ( i - 1 ) * 4; 同義,str 爆索引的未來清晰可見
特別是第二述句的 i=i|0;,任何值與 0 做 OR 的結果都是原值,此述句的用意究竟是
巨乳は夢が詰まってるから大きい、貧乳はみんなに夢を与えているから小さいんだ!
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!