寫一個“標準”巨集MIN,這個巨集輸入兩個引數並返回較小的一個。另外,當你寫下面的程式碼時會發生什麼事?least = MIN(*p++, b)
MIN(*p++, b)會產生巨集的副作用
剖析:
這個面試題主要考查面試者對巨集定義的使用,巨集定義可以實現類似於函式的功能,但是它終歸不是函式,而巨集定義中括弧中的“引數”也不是真的引數,在巨集展開的時候對“引數”進行的是一對一的替換。程式設計師對巨集定義的使用要非常小心,特別要注意兩個問題:
(1) 謹慎地將巨集定義中的“引數”和整個巨集用用括弧括起來。所以,嚴格地講,下述解答:
#define MIN(A,B) (A) <= (B) ? (A) : (B)
#define MIN(A,B) (A <= B ? A : B )都應判0分;
(2) 防止巨集的副作用。
巨集定義#define MIN(A,B) ((A) <= (B) ? (A) : (B))對MIN(*p++, b)的作用結果是:((*p++) <= (b) ? (*p++) : (b)) 這個表示式會產生副作用,指標p會作兩次++自增操作。除此之外,另一個應該判0分的解答是:#define MIN(A,B) ((A) <= (B) ? (A) : (B));
這個解答在巨集定義的後面加“;”,顯示編寫者對巨集的概念模糊不清,只能被無情地判0分並被面試官淘汰。
相關推薦
寫一個“標準”巨集MIN,這個巨集輸入兩個引數並返回較小的一個。另外,當你寫下面的程式碼時會發生什麼事?least = MIN(*p++, b)
#define MIN(A,B) ((A) <= (B) ? (A) : (B))MIN(*p++, b)會產生巨集的副作用剖析:這個面試題主要考查面試者對巨集定義的使用,巨集定義可以實現類似於函式的功能,但是它終歸不是函式,而巨集定義中括弧中的“引數”也不是真的引數
定義一個函式模板,要求返回兩個值中的較小值。
#include<iostream> using namespace std; template<typename T>//定義函式模板,T為型別引數; T cmin(T a,T b)//函式的返回型別和形參型別; { T min=a;//儲存最大的變數; if(a&
C++primer第五版 編寫一個函式,令其接收兩個引數,一個是int型的數,另一個是int指標。函式比較int的值和指標所指的值,返回較大的那個。
該題目主要是為了熟悉函式引數的幾種傳遞方式。定義函式形參時,可以定義成傳值(本身)、傳指標(*)、傳引用(&)。如果只是訪問引數值,不對其進行修改,那麼這三種方式都是可以的。例如該題目,就僅僅是比較兩個引數的大小,並沒有對引數本身進行修改,因此傳值和傳指標都是可行的。
JAVA--第十週作業編寫之一個Teacher類負責給出算術題目,隨機給出兩個整數並進行運算,並判斷回答者的答案是否正確;編寫一個GUI類ComputerFrame,回答者可以通過GUI看到題目並給出
感言:剛開始編的時候沒有把number和number1 設為全域性變數,導致結果不正確。還有本來用的是AWT類,現在改成了Swing類,這個類功能比較強大,元件和視覺化介面都很好。但是不知道圖片怎麼顯示不出來了,在ecplise上應該可以顯示出來的。import jav
定義一個帶參的巨集,使兩個引數的值互換,並寫出程式,輸入兩個數作為使用巨集時的實參。輸出已交換後的兩個值。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanne
輸入兩個整數,求他們相除的餘數。用帶參的巨集來實現,程式設計序。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanne
設計四個線程,當中共兩個線程每次對j添加1,另外兩個線程每次對j降低1。循環100次,寫出程序。
public read 設計 test6 ng- -m popu div for package cn.usst.DataTest6; /** * 設計四個線程,當中共兩個線程每次對j添加1,另外兩個線程每次對j降低1。循環100次,寫出程序。 * @ * *
設A和B是兩個按元素值遞增有序的單鏈表,寫一算法將A和B歸並為按按元素值遞減有序的單鏈表C,試分析算法的時間復雜度。(利用上篇帶有頭結點的線性鏈表操作)
遞增 else 長度 初始化 get b- sizeof int insert #include <stdio.h>#include <malloc.h>typedef int DataType;#include "LinList.h" void
設計一個演算法,刪除遞增有序連結串列中值大於mink且小於maxk的所有元素(mink和maxk是給定的兩個引數,其值可以和表中的元素相同,也可以不同)。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li
一個按鈕提交兩個form表單,分別提交到兩個action裡,第一個form的資料丟失
--背景 在一個iframe開啟的窗口裡,有兩個需要提交的form,而且需要提交到不同的兩個action裡,正常操作下丟失第一個form的資料 --解決方法 在這兩個form下新增一個新的iframe標籤<iframe id = "這個id要與這個視窗的iframe的id不同"&g
證明,一個環狀連結串列(首尾相連)的兩個指標head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,他們第一次相遇於出發的節點
一個環狀連結串列(收尾相連),兩個指標 head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,請證明,兩個指標第一次相遇於出發的節點。 設兩個指標走的次數為 x,使用簡單的數學公式即可證明。難度 1 面。考察基本的數學 知識。 設連結串列有 m 個元素,head1
把兩個有序數組合併成一個有序陣列,演算法複雜度O(N)
/** * */ /** * @author jueying: * @version 建立時間:2018-10-22 下午01:32:44 * 類說明 */ /** * @author jueying * */ public class Test4 {
c++:一個記憶體地址,居然可以存在兩個不同的值
#include<iostream> using namespace std; int main() { const int a = 10; const int * p = &a; int *q; q = const_cast<int *&
編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD,如1999年1月12日應輸入為19990112),程式將判斷兩個日期的先後順序,以及兩個日期之間的間隔天數(例
編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD, 如1999年1月12日應輸入為19990112), 程式將判斷兩個日期的先後順序, 以及兩個日期之間的間隔天數(例如1999年1月1日和1999年1月2日之間的間隔是1天。
編寫一個程式,對一個整型陣列的元素求和,結果使用全域性變數sum儲存,另外對陣列元素中的奇數求和,結果使用區域性變數sum儲存,在主程式將兩個結果輸出。
#include<iostream> using namespace std; int sum_1(int a[]);//定義計算奇數的和; int main() { int a[]={1,2,3,4,5,6,7,8,9,10};//定義陣列並附初值; int i,sum=0,s
給出一個m*n的矩陣,求左上角到右下角的距離的最小值。
問題描述 這是一個商湯科技筆試題的變形,大致是給出一個m*n的矩陣,矩陣裡的數代表其他相鄰格到此格的距離,且只能向右和向下走,求左上角到右下角的距離的最小值。 例: 0 1 9 3 5 2 6 8 7 這個例子的最短距離是0-1-5-2-7,結果是15。 這個真
PHP只保留字串首尾字元,隱藏中間用*代替(兩個字元時只顯示第一個)
/** * 只保留字串首尾字元,隱藏中間用*代替(兩個字元時只顯示第一個) * @param [string] $user_name 字串 * @param [int] $head 左側保留位數 * @param [int] $foot 右側保留位數 * @r
問題:在pycharm中執行程式,兩個.py檔案屬於同一目錄且都存在,在一個.py檔案無法使用from...import命令引用另一個.py檔案,即from...import...有紅色波浪線
轉自:https://blog.csdn.net/l8947943/article/details/79874180 https://blog.csdn.net/wcx1293296315/article/details/81156036 問題具體如圖: 兩個.py檔案屬於同一個檔案
各種簡單樣式的彈出框 這是一個基於 AlertDialog 和 Dialog 這兩個類封裝的多種彈出框樣式,其中提供各種簡單樣式的彈出框使用說明。同時也可自定義彈出框。
jjdxm_dialogui 專案地址:jjdxmashl/jjdxm_dialogui 簡介:各種簡單樣式的彈出框 這是一個基於 AlertDialog 和 Dialog 這兩個類封裝的多種彈出框樣式,其中提供各種簡單樣式的彈出框使用說明。同時也可自定義彈出框。 更多:作者
Java:定義五個函式,分別實現①計算陣列的最大值MAX②最小值MIN③陣列和SUM④拼接兩個陣列a和b⑤擷取a陣列的一部分
import java.io.IOException; public class Arr8{ //1.計算陣列中最大值 public static int arrayMaxElement(int [] data){ if(data == null){