两个面试题仅供娱乐,切勿模仿

代码包括两个题

1. 返回两个int型数中的较大者,不准用关系运算符,不准用if, while, for等语句

2. 一句代码求字符串长度

代码
 1 #include <iostream>
 2 using namespace std ;
 3 
 4 // return the sign of a number, 0 for '+', 1 for '-'
 5 int signof(int num)
 6 {
 7     return unsigned(num) >> (sizeof(int* 8 - 1) ;
 8 }
 9 
10 // compare two numbers without using relational operators, return the max number
11 int MaxNum(int a, int b)
12 {
13     int p[2= {a, b} ;
14     return p[signof(a - b)] ;
15 }
16 
17 // one clause to return the length of a string
18 unsigned int StrLen(char *s)
19 {
20     return s == NULL || *== '\0' ? 0 : StrLen(s + 1+ 1 ;
21 }
22 
23 int main(void)
24 {
25     
26     cout << MaxNum(10-1<< endl ;
27 
28     char *= "hello world" ;
29     cout << StrLen(p) << endl ;
30 
31     system("pause") ;
32     return 0 ;
33 }

其实第一题也可以用一句代码实现

1 int MaxNum(int a, int b)
2 {
3     return (a - b) >> (sizeof(int* 8 - 1? b : a ;
4 }
5 

但凡要求用一句代码实现的题目,基本上都用到三目运算符或者递归

原文地址:https://www.cnblogs.com/graphics/p/1680895.html