私の理解では、Cで代入ステートメントを評価すると、割り当てられた値も返されます。
ただし、以下のコードを実行すると、そうではないようです。source_next_level(GLibキュー)が空の場合、g_queue_pop_head()関数はNULLを返し、これがcurrent_q_nodeに割り当てられます。
ただし、whileループの条件付きチェックでの!= NULL比較は、current_q_nodeがNULLの場合でもwhileループに入るため、この比較を評価していないようです。
g_queue_pop_headがNULLを返すときにwhileループに入るのはなぜですか?
while((current_q_node = g_queue_pop_head(source_next_level)) != NULL);
{
if(current_q_node == NULL) puts("It doesn't seem this should ever be printed but it is");
}